我正在开发一个使用AVCaptureDevice.从iPhone摄像机获取图像的iOS应用程序。
所拍摄的图像的像素密度(Ppi)似乎为72皮。
1. --我需要将这些图像发送到后端云服务器进行进一步处理,该服务器期望图像的最小像素密度为300PIE。
2.我也看到了从原生iPhone 5相机拍摄的图像也有72像素的密度。
3.我需要知道在AVCapture基金会中是否有任何设置来设置所拍摄的图像的像素密度,或者是否有方法将图像的像素密度从72提高到300 ppi。
任何帮助都将不胜感激。
发布于 2014-04-21 15:48:48
正如@Codo所指出的,在图像被输出之前,像素密度是不相关的(到显示器、打印机、RIP等等)。这是元数据,不是图像数据。但是,如果您正在处理的第三方服务无法理解这一点,则需要在捕获图像之后和保存图像之前编辑图像元数据。
如下所示:
captureStillImageAsynchronouslyFromConnection:stillImageConnection
completionHandler:^(CMSampleBufferRef imageDataSampleBuffer
NSError *error) {
CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(kCFAllocatorDefault,
imageDataSampleBuffer,
kCMAttachmentMode_ShouldPropagate);
NSMutableDictionary *metadata = [[NSMutableDictionary alloc]
initWithDictionary:(__bridge NSDictionary*)metadataDict];
CFRelease(metadataDict);
NSMutableDictionary *tiffMetadata = [[NSMutableDictionary alloc] init];
[tiffMetadata setObject:[NSNumber numberWithInt:300]
forKey(NSString*)kCGImagePropertyTIFFXResolution];
[tiffMetadata setObject:[NSNumber numberWithInt:300] forKey:
(NSString*)kCGImagePropertyTIFFYResolution];
[metadata setObject:tiffMetadata forKey:(NSString*)kCGImagePropertyTIFFDictionary];
.
.
.
}];然后将metadata输入writeImageToSavedPhotosAlbum:metadata:completionBlock、writeImageDataToSavedPhotosAlbum:metadata:completionBlock或保存到私有应用程序文件夹中,这取决于您的需求。
发布于 2014-04-21 14:05:51
72皮的3264×2448像素的图像和300皮的3264×2448像素的图像有什么区别?除了元数据中的一些细微差别外,几乎没有任何差别。我不明白为什么你的后端服务坚持最低像素密度。
当您以特定大小打印或显示图像或使用特定大小将其放置在文档中时,像素密度(或ppi)就会变得相关。
无论如何,没有很好的理由在捕获时设置特定的ppi。这可能就是苹果公司使用默认密度72皮的原因。我不知道有什么办法能在捕获的时候改变它。
但是,您可以在以后通过修改JPEG文件的EXIF数据来更改它,例如使用利比克夫。
https://stackoverflow.com/questions/23193946
复制相似问题