iOS 6 Safari图片上传 - 方向错误

时间:2012-10-24 19:00:10

标签: ios image forms upload safari

我已经构建了一个网络应用,可让您从浏览器上传照片。在iOS 6中使用此功能时,即使在上传时以照片的形式拍摄照片,照片也会以横向方式结束。我应该做一些服务器端检查以正确的方式获取图像,还是有某种iOS特定属性/ JavaScript我可以应用于上传表单来解决这个问题?

更新

根据要求,这里是我写的代码。先决条件是我使用PHP和WideImage库(这是一个更大的脚本的片段,所以如果你愿意,你可以使用不同的图像操作)。

// Load Image Into Wide Image
$image=WideImage::load(IMG_UPLOAD_DIR.$result['name']);
$exif=exif_read_data(IMG_UPLOAD_DIR.$result['name']);
$orientation=$exif['Orientation'];
$result['orientation']=$orientation;

// Use Wide Image To Resize Images
$full=$image->resize(IMG_FULL_H,IMG_FULL_H);
$thumb=$image->resize(IMG_THUMB_W,IMG_THUMB_H);

switch($orientation){
    case 2:
        $full->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 3:
        $full->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 4:
        $full->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 5:
        $full->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 6:
        $full->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 7:
        $full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 8:
        $full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    default:
        $full->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;
}

4 个答案:

答案 0 :(得分:6)

检查图像exif元数据,iPhone相机拍摄“旋转”图像。

答案 1 :(得分:2)

答案 2 :(得分:1)

作为A-Live答案的延伸:

如果你使用ruby,RMagick有一个auto_orient方法。 来自文档:

  

根据图像的EXIF方向标记旋转或翻转图像。   请注意,只有现代数码相机的某些型号可以标记图像   与方向。如果图像没有方向标记,   或者图像已经正确定向,然后auto_orient返回   图像的精确副本。

答案 3 :(得分:0)

值得注意的是,通过Cloudinary运行您的图片会对此进行排序。

在通过该服务进行路由之前,我使用iPhone拍摄的照片将在桌面上显示为旋转(看似无理由)

一旦在Cloudinary网址后面, 任何图像转换功能,图像将以正确的方向返回。

我正在使用他们的付费服务,但似乎他们有免费套餐。