2

我正在尝试使用 ALAssetLibrary 在我的应用程序中显示相机胶卷中的照片。除裁剪图像外,所有图像均显示良好。fullResolutionImage当使用方法ALAssetRepresentation而不是裁剪版本时,ALAsset 返回图像的未编辑版本。所以我试图ALAsset从其元数据中提取对象的裁剪信息。我搜索了一下,发现裁剪信息包含在AdjustmentXMP我的ALAssetRepresentation对象的元数据键中。使用上述信息,我能够在我的应用程序中正确显示裁剪的图像,但 v5.1 及更高版本的方法在 iOS v5.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 上的元数据字典包含AdjustmentXMP其中包含裁剪信息,而 v5.0 上的同一字典没有AdjustmentXMP键。所以裁剪在 v5.0.1 上失败。

关于如何在 iOS v5.0.1 及更低版本的设备上显示裁剪图像的任何指示?

4

0 回答 0