Я пытаюсь заставить изображения iphone вращаться при изменении размера, но я просто не могу заставить его работать.
Часть загрузки и изменения размера работает нормально. Это часть вращения, которая доставляет мне неприятности.
Я надеюсь, что кто-то может заметить мою ошибку новичка! 🙂
function image_fix_orientation($src, $filename) {
$exif = exif_read_data($filename, 0, true);
if (!empty($exif['Orientation'])) {
$ort = $exif['IFD0']['Orientation'];
switch ($ort) {
case 3:
$src = imagerotate($src, 180, 0);
break;
case 6:
$src = imagerotate($src, -90, 0);
break;
case 8:
$src = imagerotate($src, 90, 0);
break;
}
}
return $src;
}
function uploadImage($inputImage){
$inputImage = $inputImage;
$uniqueId = uniqid();
$errors=0;
if ( isset($_POST['submitNewProduct']) || isset($_POST['productImageEdit']) || isset($_POST['productImageSecondEdit']) || isset($_POST['productImageThirdEdit']) ) {
ini_set('memory_limit', '-1');
$image =$_FILES[$inputImage]["name"];
$uploadedfile = $_FILES[$inputImage]['tmp_name'];
$size=filesize($_FILES[$inputImage]['tmp_name']);
if(isset($_POST['productImageValue'])) {
$productInputValue = $_POST['productImageValue'];
} else {
$productInputValue = 0;
}
if(isset($_POST['productImageSecondValue'])) {
$productInputValueSecond = $_POST['productImageValueSecond'];
} else {
$productInputValueSecond = 0;
}
if(isset($_POST['productImageThirdValue'])) {
$productInputValueThird = $_POST['productImageValueThird'];
} else {
$productInputValueThird = 0;
}
if ($productInputValue < 18388608 || $productInputValueSecond < 18388608 || $productInputValueThird < 18388608) {
if ($size < 18388608) {
if (!empty($image)) {
$filename = stripslashes($_FILES[$inputImage]['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) {
echo "<h3>Forkert filformat, kun JPG, PNG og GIF er tilladt.</h3>";
$errors=1;
}
else {
if($extension=="jpg" || $extension=="jpeg" ) {
$uploadedfile = $_FILES[$inputImage]['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
$src = image_fix_orientation($src, $filename);
}
else if($extension=="png") {
$uploadedfile = $_FILES[$inputImage]['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
}
else {
$src = imagecreatefromgif($uploadedfile);
}
list($width,$height)=getimagesize($uploadedfile);
if($width <= 800) {
$newwidth= $width;
} else {
$newwidth= 800;
}
if(!$errors) {
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagefilledrectangle($tmp, 0, 0, $newwidth, $newheight, imagecolorallocate($tmp, 255, 255, 255));
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "uploads/". $uniqueId . "-" . $_FILES[$inputImage]['name'];
imagejpeg($tmp,$filename,100);
imagedestroy($src);
imagedestroy($tmp);
}
else {
echo "<h3>Der skete en fejl, prøv venligst igen</h3>";
}
}
}
} else {
echo "<h3>Billedet: " . $_FILES[$inputImage]["name"] . " fylder for meget.</h3>";
}
} else {
echo "<h3>Et af billederne fylder for meget.</h3>";
}
}
$productImage['name'] = $uniqueId . "-" . basename($_FILES[$inputImage]["name"]);
$productImage['ort'] = $convertToInt;
return $productImage;
}
РЕДАКТИРОВАТЬ: я пробовал решение, опубликованное в ответах, но теперь я получаю эту ошибку:
https://gyazo.com/591feaa396e194a69a012715d02a32e7
Большое спасибо за ваше время заранее!
С наилучшими пожеланиями! 🙂
imagerotate()
ожидает ресурс изображения, вы предоставляете ему строку пути к файлу.
переместите свой звонок в image_fix_orientation()
после imagecreatefromjpeg()
функция
if($extension=="jpg" || $extension=="jpeg" ) {
$uploadedfile = $_FILES[$inputImage]['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
$src = image_fix_orientation($src , $filename);
}
Других решений пока нет …