14

我已经构建了一个网络应用程序,可让您从浏览器上传照片。在 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

4 回答 4

6

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

于 2012-10-24T20:27:11.837 回答
2

你可以试试这个 jQuery 插件(在这个线程的底部)

IOS6 和 Safari 照片上传 - File API + Canvas + jQuery Ajax 异步上传和调整文件大小

于 2012-10-25T04:48:23.000 回答
1

作为 A-Live 答案的扩展:

如果您使用的是 ruby​​,RMagick 有一个auto_orient方法。从文档:

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

于 2013-02-12T14:46:41.830 回答
0

值得注意的是,通过Cloudinary运行您的图像可以解决这个问题。

在通过该服务路由之前,我用 iPhone 拍摄的照片只会在桌面上显示为旋转(似乎没有理由) 。

一旦在 Cloudinary url 后面,使用 任何图像转换功能,图像都会以正确的方向返回。

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

于 2014-01-23T18:37:29.207 回答