Я пытаюсь сделать запрос 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"]
Я пытаюсь сделать запрос API с помощью PHP, но сначала мне нужно масштабировать изображение, полученное из формы, до разрешения 1024 на 1024. Этот PHP-скрипт отлично работает с файлами JPG, но с файлами PNG PHP возвращает сообщение об ошибке 500. Он работает только с файлами формата JPG, а не PNG, например, которые я переименовал в файлы .jpg. [code]$fileInfo = pathinfo($_FILES['image']['name']); $fileExtension = strtolower($fileInfo['extension']);
// Ü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;
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); [/code] Ограничения 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"]