gpt4 book ai didi

php - 上传时图像自动旋转

转载 作者:行者123 更新时间:2023-12-03 00:04:39 25 4
gpt4 key购买 nike

我正在尝试上传 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;
}

我没有使用任何旋转函数,但它仍然在旋转。我可以使用 PHP GD 函数,例如 imagerotate,但由于黑色背景等原因不想使用。

如果你能帮忙......你就是最棒的人!!

最佳答案

我的猜测是,您上传的图像实际上已旋转,但正在被纠正,因为它的 EXIF 部分中包含旋转数据。 (例如,相机在拍照时可能会识别纵向方向,并将该信息保存在 EXIF 数据中;某些查看软件会识别旋转数据,并在查看照片时自动旋转照片。) ,图像可能只是看起来为您旋转,具体取决于您用来查看它的内容。

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

如果您尝试不同的图像(最好是来自不同的来源)会发生什么?有没有可以查看图像 EXIF 数据的软件?寻找“方向”值;除“1”之外的任何值都表示图像已设置旋转(有关正确的描述,请参阅 this page。)

因此,总而言之,我想说 JPEG 文件中的基础图像处于“错误”方向,并且 EXIF 数据包含用于纠正显示旋转的信息。如果源是 iPhone(刚刚玩过我的 iPhone),它似乎以横向方式存储其底层图像数据,但如果图像是实际拍摄的(因此应该显示),则设置 EXIF 数据,这很有可能)作为肖像。

解决此问题的最佳方法几乎肯定是在上传后使用 PHP EXIF functions 检查文件上的 EXIF 数据。并根据需要旋转图像以纠正方向,然后再保存您自己的副本。

关于php - 上传时图像自动旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5301006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com