加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:29:05 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试上传一个base64编码的图像,并在解码之后保存.图像正在上传和保存,我可以使用URL和所有内容访问它,但图像逆时针旋转90度,我不知道为什么! 我获得编码数据的地方很好,就像把它放在 img /工作正常! function saveImageData($base64Data) { $base64_
我正在尝试上传一个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数据,并在保存自己的副本之前根据需要旋转图像以更正方向.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读