2

ALAssetLibraryを使用して、アプリケーション内でカメラロールの写真を表示しようとしています。トリミングされた画像を除いて、すべての画像が正常に表示されます。ALAssetは、トリミングされたバージョンの代わりにfullResolutionImageメソッドを使用すると、編集されていないバージョンの画像を返します。そのため、メタデータからオブジェクトのALAssetRepresentationトリミング情報を抽出しようとしています。ALAssetグーグルで検索したところ、トリミング情報がオブジェクトAdjustmentXMPのメタデータのキーに含まれていることがわかりました。ALAssetRepresentation上記の情報を使用すると、アプリ内でトリミングされた画像を正しく表示できますが、v5.1以降ではアプローチしますが、iOSv5.0では失敗します。iOS 5.1でトリミングされた画像のメタデータディクショナリ:

 {
    AdjustmentXMP = "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"XMP Core 4.4.0\">\n   <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n      <rdf:Description rdf:about=\"\"\n            xmlns:aas=\"http://ns.apple.com/adjustment-settings/1.0/\">\n         <aas:AffineA>1</aas:AffineA>\n         <aas:AffineB>0</aas:AffineB>\n         <aas:AffineC>0</aas:AffineC>\n         <aas:AffineD>1</aas:AffineD>\n         <aas:AffineX>-266</aas:AffineX>\n         <aas:AffineY>-589</aas:AffineY>\n         <aas:CropX>0</aas:CropX>\n         <aas:CropY>0</aas:CropY>\n         <aas:CropW>270</aas:CropW>\n         <aas:CropH>162</aas:CropH>\n      </rdf:Description>\n   </rdf:RDF>\n</x:xmpmeta>\n";
    ColorModel = RGB;
    DPIHeight = 72;
    DPIWidth = 72;
    Depth = 8;
    Orientation = 1;
    PixelHeight = 1024;
    PixelWidth = 768;
    "{Exif}" =     {
        ApertureValue = "2.526069";
        BrightnessValue = "0.1544926";
        ColorSpace = 1;
        ComponentsConfiguration =         (
            0,
            0,
            0,
            1
        );
        DateTimeDigitized = "2013:01:22 14:12:59";
        DateTimeOriginal = "2013:01:22 14:12:59";
        ExifVersion =         (
            2,
            2
        );
        ExposureMode = 0;
        ExposureProgram = 2;
        ExposureTime = "0.06666667";
        FNumber = "2.4";
        Flash = 16;
        FlashPixVersion =         (
            1,
            0
        );
        FocalLenIn35mmFilm = 33;
        FocalLength = "4.13";
        ISOSpeedRatings =         (
            400
        );
        MeteringMode = 5;
        PixelXDimension = 768;
        PixelYDimension = 1024;
        SceneCaptureType = 0;
        SensingMethod = 2;
        ShutterSpeedValue = "3.906905";
        SubjectArea =         (
            1631,
            1223,
            881,
            881
        );
        WhiteBalance = 0;
    };
    "{GPS}" =     {
        Altitude = "216.1379";
        AltitudeRef = 0;
        DateStamp = "2013:01:22";
        Latitude = "28.46366666666667";
        LatitudeRef = N;
        Longitude = "77.04916666666666";
        LongitudeRef = E;
        TimeStamp = "08:42:56.00";
    };
    "{TIFF}" =     {
        DateTime = "2013:01:22 14:14:39";
        Make = Apple;
        Model = "iPhone 5";
        Orientation = 1;
        ResolutionUnit = 2;
        Software = "QuickTime 7.7.1";
        XResolution = 72;
        YResolution = 72;
        "_YCbCrPositioning" = 1;
    };
}

iOS 5.0.1でトリミングされた画像のメタデータディクショナリ:

Metadata: {
    ColorModel = RGB;
    Depth = 8;
    PixelHeight = 2048;
    PixelWidth = 1078;
    "{JFIF}" =     {
        DensityUnit = 0;
        JFIFVersion =         (
            1,
            1
        );
        XDensity = 1;
        YDensity = 1;
    };
}

上記のように、v5.1のメタデータディクショナリにはトリミング情報が含まれていますが、v5.0の同じディクショナリにはキーAdjustmentXMPがありません。AdjustmentXMPしたがって、v5.0.1ではトリミングが失敗します。

iOS v5.0.1以下のデバイスでトリミングされた画像を表示する方法に関するポインタはありますか?

4

0 に答える 0