php – 图像在上传时自动旋转

前端之家收集整理的这篇文章主要介绍了php – 图像在上传时自动旋转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试上传一个base64编码的图像,并在解码之后保存.图像正在上传和保存,我可以使用URL和所有内容访问它,但图像逆时针旋转90度,我不知道为什么!

我获得编码数据的地方很好,就像把它放在< img />工作正常!

function saveImageData($base64Data) {
    $base64_decoded = base64_decode($base64Data);
    $im = imagecreatefromstring($base64_decoded);
    if ($im !== false) {
        $imagepath = '/public/uploads/' . time() . '.jpg';
        imagejpeg($im,$imagepath);
        chmod($imagepath,0755);
        imagedestroy($im);
    } else {
        return false;
    }
    return $imagepath;
}

我没有使用任何旋转功能,但仍然旋转.我可以使用像imagerotate这样的PHP GD功能,但不希望出现黑色背景等原因.

如果你可以帮助…你最好的人!

我的猜测是,您上传的图像实际上是旋转的,但正在被更正,因为它的EXIF部分中包含旋转数据. (例如,拍摄照片时相机可能会意识到纵向,并将该信息保存在EXIF数据中;某些观看软件知道旋转数据,并在观看时自动旋转照片.)在这种情况下,根据您用来查看的图像,图像可能只会显示为旋转.

您是否使用相同的软件查看“上传之前”和“上传后”图像?如果您使用相同的网络浏览器来查看它们会发生什么,比如说

如果您尝试不同的图片,最好是从不同的来源,会发生什么?你有没有任何软件可以让你查看图像的EXIF数据?寻找“取向”值;除“1”之外的任何内容都意味着图像的旋转设置(对于一个体面的描述,请参阅this page).

因此,总而言之,我认为JPEG文件中的底层图像处于“错误”方向,而EXIF数据包含用于校正该旋转以显示的信息.这很有可能,如果源是例如,刚刚玩过我的iPhone,似乎以横向方式存储其底层图像数据,但是如果图像实际上被采集,则设置EXIF数据(因此应该被显示) )作为肖像.

修复它的最佳方法几乎肯定是在上传后使用PHP EXIF functions检查文件上的EXIF数据,并在保存自己的副本之前根据需要旋转图像以更正方向.

原文链接:https://www.f2er.com/php/132881.html

猜你在找的PHP相关文章