I have a issiue when uploading a image taken using iphone. I am trying to use PHP and the imgrotate function to automaticly decide if the image needs to be rotated to the correct possition, before uploading it to the server.
My html code:
<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>
The PHP code im using: Also return a error: Warning: imagerotate() expects parameter 1 to be resource, string given in.
Anyone have a working code for this scenario?
<?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);
?>
You are using imagerotate
wrong. It expect first parameter to be resource while you are passing the filename. Check manual
Try this:
<?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);
?>
Do not forget to free the memory by adding following two lines:
imagedestroy($imageResource);
imagedestroy($image);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.