2016-09-09 1 views
1

간단한 이미지 파일 크기 축소 작업을하고 있지만이 문제가 있습니다. JPEG에 손실 없음 옵션을 사용하면 파일 크기가 원래 이미지의 NSData와 3 배가됩니다 (동일한 해상도). 어떠한 제안?NSData는 NSData로 UIImage 결과 길이가 3 배로 증가합니다

let data = someImageData 
print(data.length) 
let image = UIImage(data: data)! 
let newImageData = UIImageJPEGRepresentation(image, 1) 
print(newImageData.length) 
let newImageData = UIImageJPEGRepresentation(image, 0.8) 
print(newImageData.length) 

및 출력 :

2604768 //original length 
8112955 //new length if compression = 1 
2588870 //new length if compression = 0.8 

내가 동일한 데이터 길이를 얻기 위해 0.8 품질 손실을해야 보인다

다음은 간단한 코드입니다. 내가 뭐 놓친 거 없니? 피스 도움말.

편집 : 데이터를 UIImage로 변환 한 다음 UIImageJPEGRepresentation (image, 1)로 변환하면 새로운 데이터의 길이가 매주기 증가합니다. 그러나 UIImageJPEGRepresentation (image, 0.8)을 사용하면 새로운 데이터의 길이가 조금 줄어 듭니다 (그러나 약간의 제한). 그러나 화합물 자격 손실이 걱정되어야합니다. 코드가 라인 메모리에 이미지를 압축/압축 해제되는 일을 무엇

+0

8112955. 될 것입니다 uiimagejpegrepresentaion-and-saving-it-to-a-rq = 1 그러나 아직 4 년이 지난 후에도 해결되었습니다 ... – JDG

답변

2

->let image = UIImage(data: data)! 하고 최고 품질의 비율 (q=1.0)let newImageData = UIImageJPEGRepresentation(image, 1)로, JPEG로 다시 압축. 그것이 이미지가 갑자기 커지는 이유입니다.

NSData에서 UIImage로 이미지를 가져 오는 순간 감압/변환이 이미지 크기를 변경합니다. http://stackoverflow.com/questions/11500396/converting-uiimage-to-nsdata-with- :

이미지의 파일 크기는 실제로 내가 다시 일부 검색을했고, 그래서이 질문을 발견

+0

데이터는 (PHImageManager.defaultManager(). requestImageDataForAsset을 통해 얻은) 이미지 파일과 파일 크기는 실제로 2604768에 가깝습니다. – JDG

관련 문제