从我的服务器加载的图片在iPad应用程序上的颜色错误

Phi*_*ach 8 image colors ipad srgb ios

我正在开发一款iPad应用程序,用于展示摄影师的照片.这些照片会上传到网络服务器上,并直接通过应用程序提供,下载并使用以下方法显示:

if([[NSFileManager defaultManager] fileExistsAtPath:[url path]]){
    CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
    CGImageRef cgImage = nil;
    if(source){
        cgImage = CGImageSourceCreateImageAtIndex(source, 0, (CFDictionaryRef)dict);
    }

    UIImage *retImage = [UIImage imageWithCGImage:cgImage];

    if(cgImage){
        CGImageRelease(cgImage);
    }
    if(source){
        CFRelease(source);
    }

    return retImage;
}
Run Code Online (Sandbox Code Playgroud)

我可以观察到原始图片(从磁盘或Mac上的网页和摄影师的Mac上显示)和iPad上显示的照片颜色的显着变化(结果是错误的)应用程序,甚至在Safari中).

经过一些搜索,我发现了一些帖子,解释了iDevices如何不使用嵌入式颜色配置文件,所以我发现我是这样做的.使用以下信息保存照片:

colorspace:RGB,colorprofile:sRGB iec ...

我发现了一些文章(例如来自imageoptimanalogsenses的这个链接),我应该通过转换为sRGB来保存设备导出的图片,而不需要嵌入颜色配置文件,但我不知道怎么能这样做?每次我尝试(我没有photoshop,所以我使用命令行ImageMagick),结果图片有以下信息,仍然无法在我的iPad(以及我测试的任何其他iPad)上正确显示:

colorspace:RGB

以下是在iPhone或iPad上无法正确显示但在网络上无法正常显示的图片示例

我想将其转换为正确显示,任何想法都会受到欢迎:)

[编辑]我已成功使用以下参数使用photoshop的"save for web"选项获取正确的图像: 确定photoshop导出参数 但是我仍然无法将这些设置自动应用到我的所有照片中.

Eri*_*icS 1

要读取图像,只需使用:

UIImage *image = [UIImage imageWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)

至于颜色配置文件问题,请尝试使用sips命令行工具修复图像文件。就像是:

mkdir converted
sips -m "/System/Library/ColorSync/Profiles/sRGB Profile.icc" *.JPG --out converted
Run Code Online (Sandbox Code Playgroud)