Функция PHP imagecopyresampled() работает только для изображений JPGPhp

Кемеровские программисты php общаются здесь
Ответить
Гость
 Функция PHP imagecopyresampled() работает только для изображений JPG

Сообщение Гость »


Я пытаюсь сделать запрос API с помощью PHP, но сначала мне нужно масштабировать изображение, полученное из формы, до разрешения 1024 на 1024.
Этот PHP-скрипт отлично работает с файлами JPG, но с файлами PNG PHP возвращает сообщение об ошибке 500. Он работает только с файлами формата JPG, а не PNG, например, которые я переименовал в файлы .jpg.

Код: Выделить всё

$fileInfo = pathinfo($_FILES['image']['name']);
$fileExtension = strtolower($fileInfo['extension']);

$allowedExtensions = array(
'jpg',
'jpeg',
'png',
'gif',
'wbmp',
'webp'
);
$allowedMimeTypes = array(
'image/jpeg',
'image/png',
'image/gif',
'image/wbmp',
'image/webp'
);

// Überprüfe die Dateierweiterung und den MIME-Typ
if (!in_array($fileExtension, $allowedExtensions) || !in_array($_FILES['image']['type'], $allowedMimeTypes)) {
echo "Fehler: Nur JPEG, PNG, GIF, WBMP und WEBP Dateien sind erlaubt.)";
exit;
}

// Überprüfen der Dateigröße
if ($_FILES['image']['size'] > 5 * 1024 * 1024) {
echo "Fehler: Die Datei darf nicht größer als 5 MB sein.)";
exit;

}

$imageInfo = getimagesize($_FILES['image']['tmp_name']);
$imageWidth = $imageInfo[0];
$imageHeight = $imageInfo[1];
$imagePixelCount = $imageWidth * $imageHeight;

if ($imagePixelCount > 1048576) { // 1.048.576 Pixel
echo "Fehler: Das Bild darf nicht mehr als 1.048.576 Pixel haben.)";
exit;
}

// Neuskalierung Anfang
// Neuskalierung Anfang

// Devc Mail
$to = 'info@example.com';
$subject = 'Check1';
$message = 'C';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);

switch ($_FILES['image']['type']) {
case 'image/jpeg':
case 'image/pjpeg': // Manchmal wird JPEG auch als pjpeg dargestellt
$sourceImage = imagecreatefromjpeg($_FILES['image']['tmp_name']);
break;
case 'image/png':
$sourceImage = imagecreatefrompng($_FILES['image']['tmp_name']);
// PNG-Transparenz beibehalten
imagealphablending($resizedImage, false);
imagesavealpha($resizedImage, true);
break;
case 'image/gif':
$sourceImage = imagecreatefromgif($_FILES['image']['tmp_name']);
break;
case 'image/webp':
$sourceImage = imagecreatefromwebp($_FILES['image']['tmp_name']);
break;
case 'image/bmp':
case 'image/x-windows-bmp':
$sourceImage = imagecreatefrombmp($_FILES['image']['tmp_name']);
break;
// ... Weitere unterstützte Formate ...
default:
echo "Fehler: Unbekanntes Bildformat.";
exit;
}

// Zielbild mit der neuen Größe erstellen
$newWidth = 1024;
$newHeight = 1024;
$resizedImage = imagecreatetruecolor($newWidth, $newHeight);

// TODO Fehler funktioniert nur für jpg dateien
// Bild skalieren
imagecopyresampled($resizedImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $imageWidth, $imageHeight);

// Speichern des skalierten Bildes
// $tempFilePath = $_FILES['image']['tmp_name'] . "_resized." . $fileExtension;
$tempFilePath = $_FILES['image']['tmp_name'] .  "_resized";
switch ($fileExtension) {
Case 'jpg':
Case 'jpeg':
imagejpeg($resizedImage, $tempFilePath);
Break ;
case 'png':
imagepng($resizedImage, $tempFilePath);
Break;
case 'gif':
imagegif($resizedImage, $tempFilePath) ;
перерыв;
// ... Получить другие дополнительные сведения о Formate hinzu ...

// Получение
imagedestroy($sourceImage) ;
imagedestroy($resizedImage);
Ограничения PHP:
upload_max_filesize=67108864
memory_limit=805306368
Я пытался масштабировать изображение PNG с помощью PHP, но получил ошибку 500.
Ошибка:
< br />
2024-03-11T17:59:44+00:00 КРИТИЧЕСКОЕ Неперехваченное значениеОшибка: путь не может быть пустым в /.../kbe_engine/bildzubild_V.1.20.php:297 КОНТЕКСТ: {"ошибка":{ "type":1,"file":"/homepages/44/d4297367306/htdocs/wordpress/kbe_engine/bildzubild_V.1.20.php","line":297},"backtrace":["","#0 / homepages/44/d4297367306/htdocs/wordpress/kbe_engine/bildzubild_V.1.20.php(297): Curl_setopt()","#1 {main}","thrown"]


Источник: https://stackoverflow.com/questions/781 ... jpg-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»