- (void)imagePickerController:(TZImagePickerController *)picker
didFinishPickingPhotoModes:(NSArray<RHPhotoModel *> *)photos
sourceAssets:(NSArray *)assets
isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto
infoArray:(NSArray *)infoArray {
for (RHPhotoModel *model in photos) {
UIImage *tmpImage = [UIImage imageWithContentsOfFile:model.photoPath];
NSData *data1 = UIImageJPEGRepresentation(tmpImage,1);
NSData *data2 = [NSData dataWithContentsOfFile:model.photoPath];
UIImage *image = [UIImage imageWithData:data2];
NSData *data3 = UIImageJPEGRepresentation(image,1);
NSLog(@"data1=%lu, data2=%lu, data3=%lu", (unsigned long)data1.length, (unsigned long)data2.length, (unsigned long)data3.length);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
위의 방법을 사용하면 이미지 photoPath가 포함 된 PhotoModel을 완성 할 수 있습니다.
왜 [NSData dataWithContentsOfFile : model.photoPath]를 사용합니까?
data2는 2497519 바이트입니다.
그러나 UIImage * tmpImage = [UIImage imageWithContentsOfFile : model.photoPath];를 사용합니다. NSData * data1 = UIImageJPEGRepresentation (tmpImage, 1); data1은 7234468 바이트입니다.UIImageJPEGRepresentation과 동일한 이미지의 데이터 크기/길이가 다른 이유 (로컬 경로로 이미지 가져 오기)
NSLog 데이터 - "데이터를 압축"으로 DATA1 = 7,234,468 (바이트), DATA2 = 2,497,519 (바이트), DATA3 = 7,234,468 (바이트)
그것은 JPEG (시스템은 다르다)의 경우는 아니지만, 비유이다 : 20 * 20의 이미지가 있다고 가정 해 봅시다. 품질 1로 변환하면 각 픽셀을 8 바이트로 저장합니다. 이제 품질을 0.5로 변환하면 각 픽셀을 4 바이트로 저장합니다. 품질이 미리 중요하지 않아도 각 픽셀은 바이트로 저장됩니다. 따라서 data1과 data3은 같은 양의 바이트를 갖는 것이 정상입니다. 이제 원본 이미지를 저장하는 데 사용 된 품질이 무엇인지 알 수 없습니다. – Larme
귀하의 질문은 무엇입니까? –
나는 왜 그가 데이터 크기/길이가 같은 이미지에 대해 다른지 묻고 있다고 생각한다. –