【问题标题】:uploaded file from iPhone / iPad not rotating correctly despite image rotation script尽管图像旋转脚本,从 iPhone / iPad 上传的文件无法正确旋转
【发布时间】:2014-03-15 06:58:51
【问题描述】:

我有一个上传文件的脚本。我添加了一个功能,应该旋转从 iPhone 或 iPad 上传的照片的图像 ..因为根据拍摄方式,它们可以横向或倒置显示。我想我的代码是正确的,但由于某种原因,在执行上传时,它仍然根本没有旋转。我做错了什么?

    $uploadedFileName = $this->relative_path . $base_dir . $file_name;
    $is_upload = @copy($file_details['tmp_name'], $uploadedFileName);
    $exif = exif_read_data($uploadedFileName);
    $orientation = $exif['COMPUTED']['Orientation'];


    if (isset($orientation)) {

       switch ($orientation) {
          case 3:
             $image_p = imagerotate($uploadedFileName, 180, 0);
             break;
          case 6:
             $image_p = imagerotate($uploadedFileName, -90, 0);
             break;
          case 8:
             $image_p = imagerotate($uploadedFileName, 90, 0);
             break;
       }
       // Output
       imagejpeg($image_p, $uploadedFileName, 100);
    }

【问题讨论】:

  • $image_p变量在哪里定义?
  • 你说得对,我刚刚更新了代码。上传有效,但图像仍未旋转。任何想法我做错了什么? :(
  • 检查$exif['COMPUTED'] 数组。它包含什么?什么是 $orientation 值?

标签: php image upload rotation orientation


【解决方案1】:

方向直接存储在 exif 数据中。所以你的代码应该是这样的:

$exif = exif_read_data($uploadedFileName);
$orientation = $exif['Orientation'];
switch ($orientation) {
   case 3:
      $image_p = imagerotate($uploadedFileName, 180, 0);
      break;
   case 6:
      $image_p = imagerotate($uploadedFileName, -90, 0);
      break;
   case 8:
      $image_p = imagerotate($uploadedFileName, 90, 0);
      break;
}
imagejpeg($image_p, $uploadedFileName, 100);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多