iOSで画像のdpi/ppiを取得するには? 生の画像ファイルにこの情報が含まれている可能性があるため、NSData から ppi/dpi を取得できますか? ありがとうございました。
3 に答える
NSData に保存されている画像から DPI を抽出するには、プロジェクトに Apple の ImageIO フレームワークを含め、次を使用します。
#import <ImageIO/ImageIO.h>
// Set your NSData up
NSData *data = some image data
// Get the DPI of the image
CGImageSourceRef imageRef = CGImageSourceCreateWithData((__bridge CFDataRef)(data), NULL);
CFDictionaryRef imagePropertiesDict = CGImageSourceCopyPropertiesAtIndex(imageRef, 0, NULL);
NSString *dpiHeight = CFDictionaryGetValue(imagePropertiesDict, @"DPIHeight");
NSString *dpiWidth = CFDictionaryGetValue(imagePropertiesDict, @"DPIWidth");
すべての画像に DPI 情報が含まれているわけではないことに注意してください。画像のメタデータに含まれる場合と含まれない場合があります。
この回答は、Flar49 の回答に基づいています。これは正しいですが、NSData から直接情報を取得するように拡張されています。詳細については、 http://iosdevelopertips.com/data-file-management/get-image-data-included-depth-color-model-dpi-and-more.htmlを参照してください。
Objective-C
画像の解像度を取得します。
CGFloat imageResolution = myImage.scale * 72.0f;
「標準」の UIImage ( 72 dpi ) から 300 dpi で画像を作成します。
UIImage *my300dpiImage = [UIImage imageWithCGImage:mySourceImage.CGImage scale:300.0f/72.0f orientation:UIImageOrientationUp] ;
迅速
解像度を取得:
let imageResolution = myImage.scale * 72.0
画像の解像度を変更:
// Just be sure source image is valid
if let source = mySourceImage, let cgSource = source.cgImage {
let my300dpiImage = UIImage(cgImage: cgSource, scale: 300.0 / 72.0, orientation: source.imageOrientation)
}
迅速な例では、ソース画像の向きを考慮して追加したことに注意してください。また、解像度を 72 から 300 dpi に変更すると、画像の詳細がないため、品質が低下することに注意してください。
大きなポイントは、画像がレンダリングされない限り、解像度は何の意味もないということです。その前に、あなたはあなたが得たビットを手に入れました..宛先の長方形のサイズを設定することにより、視聴者に見える最終的な解像度を決定するのはあなた次第です。
ファイルの解像度は、クリエーター アプリケーションによって固定されているため、画像データ自体ではなく、メタ データにあります。前の回答で説明されているように、または以下のアドレスで: