gpt4 book ai didi

php - 如何在使用 PHP 上传图像之前检查/修复图像旋转

转载 作者:可可西里 更新时间:2023-11-01 12:32:35 25 4
gpt4 key购买 nike

我在上传使用 iPhone 拍摄的图像时遇到问题。我正在尝试使用 PHP 和 imgrotate 函数在将图像上传到服务器之前自动确定是否需要将图像旋转到正确的位置。

我的html代码:

<form class="form-horizontal" method="post" enctype="multipart/form-data">  
<div class="form-group">
<div class="col-md-9">
<div class="input-group">
<span class="input-group-btn">
<span class="btn btn-default btn-file">
Choose img<input type="file" name="file" id="imgInp">
</span>
</span>

</div>
</div>
</div>
<button type="submit">Send</button>
</form>

我使用的 PHP 代码:同样返回错误:Warning: imagerotate() expects parameter 1 to be resource, string given in.

有人有这个场景的工作代码吗?

<?php

$filename = $_FILES['file']['name'];
$exif = exif_read_data($_FILES['file']['tmp_name']);


if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 3:
$image = imagerotate($filename, -180, 0);
break;
case 6:
$image = imagerotate($filename, 90, 0);
break;
case 8:
$image = imagerotate($filename, -90, 0);
break;
}
}

imagejpeg($image, $filename, 90);

?>

最佳答案

您使用的 imagerotate 有误。当您传递文件名时,它期望第一个参数是资源。检查manual

试试这个:

<?php

$filename = $_FILES['file']['name'];
$filePath = $_FILES['file']['tmp_name'];
$exif = exif_read_data($_FILES['file']['tmp_name']);
if (!empty($exif['Orientation'])) {
$imageResource = imagecreatefromjpeg($filePath); // provided that the image is jpeg. Use relevant function otherwise
switch ($exif['Orientation']) {
case 3:
$image = imagerotate($imageResource, 180, 0);
break;
case 6:
$image = imagerotate($imageResource, -90, 0);
break;
case 8:
$image = imagerotate($imageResource, 90, 0);
break;
default:
$image = $imageResource;
}
}

imagejpeg($image, $filename, 90);

?>

不要忘记通过添加以下两行来释放内存:

imagedestroy($imageResource);
imagedestroy($image);

关于php - 如何在使用 PHP 上传图像之前检查/修复图像旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287437/

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