首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP仅从图像中移除定向exif (没有图像)

PHP仅从图像中移除定向exif (没有图像)
EN

Stack Overflow用户
提问于 2022-06-09 18:40:52
回答 1查看 212关注 0票数 0

我编写了一个脚本,它在本地批处理中调整上传的图像大小,并创建缩略图。问题是,如果一些图像是垂直方向的,但是在调整大小后,它们是水平旋转的。

这是由于exif的图像方向。是否有一种简单的方法可以通过PHP从图像中移除定向exif?我知道这可以由Imagick完成,但是我不能/不想安装它。

没有它有什么解决办法吗?

目前,我是通过打开这样的图像在图像编辑器,并重新保存它,而不保留exif信息来解决它。之后,当我在脚本中调整这样的图像大小时,结果是正确的。

因此,我只想在调整大小之前从PHP脚本中的图像中删除exif。

我尝试了一个检查取向exif的函数:

代码语言:javascript
复制
function removeExif($filename) {
    if (function_exists('exif_read_data')) {
      $exif = exif_read_data($filename);
      if($exif && isset($exif['Orientation'])) {
        $orientation = $exif['Orientation'];
        if($orientation != 1){

           // $img = new Imagick($filename);
           // $img->stripImage();
           // $img->writeImage($filename);

        } 
      } 
    } 
  }

因此,我只需要用其他的东西替换Imagick部件,而不需要安装任何额外的库,可能使用已经包含的GD或其他东西。

EN

回答 1

Stack Overflow用户

发布于 2022-06-09 19:00:53

好的,所以我决定旋转图像,而不是删除exif,结果有同样的效果。因此,我检查exif的定向值(如果有的话),根据这个值,我只使用imagerotate,然后调整图像的大小。结果是完美的,不需要额外的安装和库。

代码语言:javascript
复制
   function checkExif($filename) {
        if (function_exists('exif_read_data')) {
          $exif = exif_read_data($filename);
          if($exif && isset($exif['Orientation'])) {
            $orientation = $exif['Orientation'];
            if ($exif['Orientation']==3 OR $exif['Orientation']==6 OR $exif['Orientation']==8) {
                $imageResource = imagecreatefromjpeg($filename); 
                switch ($exif['Orientation']) { 
                case 3:
                $image = imagerotate($imageResource, 180, 0);
                break;
                case 6:
                $image = imagerotate($imageResource, -90, 0);
                break;
                case 8:
                $image = imagerotate($imageResource, 90, 0);
                break;
            } 
            imagejpeg($image, $filename);
            imagedestroy($imageResource);
            imagedestroy($image);
            }
          } 
        } 
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72565145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档