Обрезать изображение PHP не работает
подскажите почему не работает код?
<?php
require "db.php";
$login = $_SESSION['logged_user']->login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);
if ($_FILES && $_FILES["file"]["error"] == UPLOAD_ERR_OK){
if($_FILES['file']['size'] < 5242880){
if($_FILES['file']['type'] == ('image/jpeg' || 'image/png') ){
$Image = imagecreatefrompng($_FILES['file']['tmp_name']);
$widthImg = imagesx($Image);
$heightImg = imagesy($Image);
if ($widthImg < $heightImg){
$ReadyImage = imagecrop($Image, ['x' => 0, 'y' => ($heightImg - $widthImg)/2, 'width' => $widthImg, 'height' => $widthImg]);
}else{
$ReadyImage = imagecrop($Image, ['x' => ($widthImg - $heightImg)/2, 'y' => 0, 'width' => $heightImg, 'height' => $heightImg]);
}
$filepath = "ava/" . $settings->id;
move_uploaded_file($ReadyImage, $filepath); /* Загружаем файл по указанному пути */
}else{
/* Учитывая accept в html, скорей всего попытка на инъекцию, начисление штрафных баллов в дальнейшем возможнен бан(ещё не реализована)*/ }
}else{
echo 202; /* big size */
}
}
?>
Перестало работать после добавления вот этого кода:
$Image = imagecreatefrompng($_FILES['file']['tmp_name']);
$widthImg = imagesx($Image);
$heightImg = imagesy($Image);
if ($widthImg < $heightImg){
$ReadyImage = imagecrop($Image, ['x' => 0, 'y' => ($heightImg - $widthImg)/2, 'width' => $widthImg, 'height' => $widthImg]);
}else{
$ReadyImage = imagecrop($Image, ['x' => ($widthImg - $heightImg)/2, 'y' => 0, 'width' => $heightImg, 'height' => $heightImg]);
}
Ответы (1 шт):
Автор решения: artemgh
→ Ссылка
Вот итоговый(рабочий) код:
<?php
require "db.php";
$login = $_SESSION['logged_user']->login;
$settings = R::findOne('users', 'WHERE `login`=?', [$login]);
if ($_FILES && $_FILES["file"]["error"] == UPLOAD_ERR_OK){
if($_FILES['file']['size'] < 5242880){
if (in_array($_FILES['file']['type'], array('image/jpeg', 'image/png'))){
$filepath = "ava/" . $settings->id;
if($_FILES['file']['type'] == 'image/jpeg'){
$Image = imagecreatefromjpeg($_FILES['file']['tmp_name']);
}else{
$Image = imagecreatefrompng($_FILES['file']['tmp_name']);
}
$widthImg = imagesx($Image);
$heightImg = imagesy($Image);
if ($widthImg != $heightImg){
$ReadyImage = $_FILES['file']['tmp_name'];
if ($widthImg < $heightImg){
$ReadyImage = imagecrop($Image, ['x' => 0, 'y' => ($heightImg - $widthImg)/2, 'width' => $widthImg, 'height' => $widthImg]);
}
if ($widthImg > $heightImg){
$ReadyImage = imagecrop($Image, ['x' => ($widthImg - $heightImg)/2, 'y' => 0, 'width' => $heightImg, 'height' => $heightImg]);
}
if($_FILES['file']['type'] == 'image/jpeg'){
imagejpeg($ReadyImage, $_FILES['file']['tmp_name']);
}else{
imagepng($ReadyImage, $_FILES['file']['tmp_name']);
}
}
move_uploaded_file($_FILES['file']['tmp_name'], $filepath);
echo 101;
}else{
/* Учитывая accept в html, скорей всего попытка на инъекцию, начисление штрафных баллов в дальнейшем возможнен бан(ещё не реализована)*/
}
}else{
echo 202; /* big size */
}
}
?>