【问题标题】:Image rotation in imagemagick thumbnailimagemagick 缩略图中的图像旋转
【发布时间】:2021-11-14 04:35:25
【问题描述】:

我在 sql server 上使用 php 创建用户手机创建的图像的缩略图,但缩略图结果旋转了 90°。

这是代码:

function generateThumbnail($imgk, $width, $height, $quality)
{
    if (is_file($imgk)) {
        $imagick = new Imagick(realpath($imgk));
        $imagick->setImageFormat('jpeg');
        $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
        $imagick->setImageCompressionQuality($quality);
        $imagick->thumbnailImage($width, $height, false, false);
        $filename_no_ext = reset(explode('.', $imgk));
        if (file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick) === false) {
            throw new Exception("Could not put contents.");
        }
        return true;
    }
    else {
        throw new Exception("No valid image provided with {$imgk}.");
    }
}

结果是这样的(在大多数图像中):

也许 exif 数据是问题,但我不知道解决方案。

【问题讨论】:

标签: php image imagemagick thumbnails exif


【解决方案1】:
    $orientation = $imagick->getImageOrientation();
    switch ($orientation) {
        case 8:
            $imagick->rotateimage("#000", -90);
            break;
        case 3:
            $imagick->rotateimage("#000", 180);
            break;
        case 6:
            $imagick->rotateimage("#000", 90);
            break;
    }

这些文件将有关设备旋转的信息保存在 EXIF 中。这可以从 getImageOrientation 函数中获得。此代码有助于根据设备旋转来旋转图像。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
相关资源
最近更新 更多