문제

카메라 롤에서 이미지를 잡고 잠시 동안 사용하고 iPhone의 PNG로 디스크에 저장합니다. 아마도 기억이 나지 않아 이상한 충돌이 발생합니다.

PNG 또는 JPG로 저장하면 차이가 있습니까 (JPG 케이스의 품질을 저하시키기위한 메모를 선택한다고 가정)? 구체적으로:

  • PNG로 저장 한 경우 디스크에서 다시로드 한 후 UIImage에서 더 많은 메모리를 사용합니까?
  • 저축 프로세스 중에 PNG가 일시적으로 더 많은 메모리를 사용함에 따라 저축 행위가 가능합니까?

나는 UIIMAGE가 형식 중립 표현이라고 가정했으며 중요하지 않아야하지만 확인해야한다고 생각했습니다.

도움이 되었습니까?

해결책

상점에 중간 버전의 이미지를 편집 할 때 저장 해야하는 응용 프로그램이 있습니다. 원래 버전에서는 PNG 형식을 사용하여 저축을 위해 JPEG를로드하고 여러 번 저장하는 데 품질 손실을 피하기 위해 저축을 사용했습니다.

2.2 소프트웨어 릴리스 주위에 Apple은 PNG 쓰기 코드로 변경을 도입하여 일부 이미지에서 PNG 데이터를 저장하는 데 몇 배 더 오래 걸렸습니다. 출구에서 이미지를 저장하려고 할 때 응용 프로그램이 시간이 걸렸 기 때문에 JPEG 형식의 저장으로 변경해야했습니다.

또한 PNG 형식으로 저장하면 UIIMAGE의 "오리엔테이션"정보가 보존되지 않기 때문에 문제가 발생하므로 내장 카메라와 함께 초상화 방향으로 찍은 사진이 저장 및 다시로드 후 회전됩니다.

다른 팁


나는 아마도 기억이 나지 않기 때문에 이상한 충돌을 받고 있습니다.


그 다음에 지금하고있는 일을 중지하십시오 먼저 그것이 실제로 충돌의 원인인지 알아냅니다. 그렇지 않으면 여기에서 잘못된 문제를 쫓아 갈 수있는 좋은 일이 있습니다. 충돌의 실제 원인을 무시하면서 존재하지 않는 메모리 문제를 해결할 가능성이 매우 높습니다. 충돌을 고치려면 충돌 원인을 파악하여 시작하십시오. "아마도"문제가 무엇인지에 대한 문제는 시간과 노력을 낭비하는 레시피입니다.

처리하는 이미지 유형에 따라 다릅니다. 사진 이미지를 다루고 있다면 JPEG는 거의 항상 PNG보다 작으며 인간의 눈에서 볼 수있는 세부 사항을 식별 할 수있는 세부 사항을 잃지 않습니다.

반대로, 단색 블록이 큰 GUI 요소 또는 이미지와 같은 고도로 비 음소도 이미지를 다루는 경우 PNG 및 JPEG는 크기가 비슷하지만 PNG는 무손실로 저장하는 반면 JPEG는 손실되지 않고 매우 눈에 띄는 유물. 당신이있는 경우 진짜 간단한 이미지 (매우 큰 색상의 일정한 색상, 예를 들어), PNG는 JPEG보다 훨씬 작을 가능성이 높으며 다시 압축 아티팩트가 없습니다.

PNG 또는 JPEG로 이미지를 저장하는 행위는 일시적인 메모리를 많이 차지해서는 안됩니다. 이미지가 메모리에 있으면 일반적으로 메모리에 압축되지 않은 저장되므로 렌더링 할 때마다 압축을 제거하는 것과는 대조적으로 화면에 매우 빠르게 화면을 그릴 수 있습니다. 압축되지 않은 이미지의 크기와 비교하여 압축하는 데 필요한 추가 임시 스토리지의 양은 매우 작습니다. 압축되지 않은 이미지를 메모리에 장착 할 수 있다면 압축하는 동안 사용되는 메모리에 대해 걱정할 필요가 없습니다.

물론, 비 휘발성 저장소에서 파일 시스템에 이미지를 작성하고 메모리 내 이미지를 자유롭게하면 압축 이미지가 얼마나 큰지는 중요하지 않습니다. . 압축 이미지의 크기는 사용중인 플래시 스토리지의 양만 영향을 미치며 문제가 될 수 있지만 앱이 메모리가 부족할 가능성이 높지는 않습니다.

충돌은 UiimagePickerController에서 알려진 메모리 누출에서 발생할 수 있습니다.

이것은 당신이 그것을 해결하는 데 도움이 될 것입니다.

하드 데이터는 없지만 Apple이 iPhone OS의 모든 곳에서 PNG를 사용하는 것처럼 보이기 때문에 PNG가 바람직하다고 가정합니다.

그러나 이미 PNG를 작성하기 위해 코드를 설정 한 경우 JPEG를 작성하기 위해 변경하기가 어렵지 않아야합니까? 두 가지 방법을 모두 시도하고 어느 것이 더 나은지 확인하십시오.

가능한 한 PNG를 사용하십시오. 컴파일의 일부로 Xcode는 유틸리티 (pngcrush)를 통해 모든 PNG 파일을 실행하여 압축하고 최적화합니다.

  1. PNG로 저장 한 경우 디스크에서 다시로드 한 후 UIImage에서 더 많은 메모리를 사용합니까? => 아니요, 동일한 해상도와 동일한 수의 채널을 가진 2 개의 이미지에서 가져 오면 메모리 크기가 동일합니다. (예 : RGBA)
  2. 저축 프로세스 중에 PNG가 일시적으로 더 많은 메모리를 사용함에 따라 저축 행위가 가능합니까? => 아니요, 디스크 메모리에만 영향을줍니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top