- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试上传 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/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!