【问题标题】:iOS Image Capture from Camera with pixel density(ppi) >300ppi从像素密度(ppi)>300ppi 的相机捕获 iOS 图像
【发布时间】:2014-04-21 08:46:53
【问题描述】:

我正在开发一个 iOS 应用程序,它使用 AVCaptureDevice 从 iPhone 相机拍摄图像。

拍摄的图像的像素密度 (ppi) 似乎为 72ppi。

1.我需要将这些图像发送到后端云服务器以进行进一步处理,该服务器期望图像的最小像素密度为 300ppi。

2.我还看到从原生 iPhone 5 相机拍摄的图像也有 72 ppi 的像素密度。

3.我想知道AVCapture基础中是否有设置拍摄图像的像素密度,或者是否有增加拍摄图像像素密度的方法从 72 到 300 ppi。

任何帮助将不胜感激。

【问题讨论】:

  • 我认为您应该寻找的是一种将 72ppi 图像转换为独立于图像源的不同密度的通用方法。

标签: ios objective-c uiimage avcapturedevice


【解决方案1】:

72ppi 的 3264 x 2448 像素图像和 300ppi 的 3264 x 2448 像素图像有什么区别?除了元数据中的一些细微差别外,几乎没有任何区别。而且我不明白为什么您的后端服务坚持最低像素密度。

当您以特定尺寸打印或显示图像或将其放置在使用特定尺寸的文档中时,像素密度(或 ppi)变得相关。

无论如何,没有充分的理由在捕获时设置特定的 ppi。这可能就是 Apple 使用默认密度 72ppi 的原因。而且我不知道有什么方法可以在捕获时更改它。

但是,您可以稍后通过修改 JPEG 文件的 EXIF 数据来更改它,例如使用libexif

【讨论】:

  • 它确实没有区别,这是因为我的网络服务使用另一个需要图像具有固定密度的服务对图像进行了一些处理。
【解决方案2】:

正如@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:completionBlockwriteImageDataToSavedPhotosAlbum:metadata:completionBlock 或保存到您的私人应用文件夹中。

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    相关资源
    最近更新 更多