Эта проблема меня сдерживает уже несколько дней
У меня есть этот код, который запрашивается AJAX с действительной ссылкой на Pixabay Image из их API. Затем он изменяется до 640×420, чтобы поместиться в контейнеры изображений вокруг сайта. Сайт изменяет его размер, сохраняет его, а затем возвращает UUID в AJAX. Эта проблема кажется быть инициированным с изменением размера изображения, не выполняющимся. Новое изображение создается и сохраняется в переменной для сохранения, но не перезаписывается копией с измененным размером.
<?php
//user authentication would go here
//loading shared API would go here
$q = $_REQUEST['q'];
//other use cases for this API would go here
if($q=="getImage") {
$pixabay = $_REQUEST['link'];
$url = gen_uuid();
$suffix = $_SERVER['DOCUMENT_ROOT']."/temp/";
$filename = $suffix.$url.".jpg";
$image = file_get_contents($pixabay);
file_put_contents($filename, $image);
$source_image_tmp = imagecreatefromjpeg($filename);
$source_image = imagecreatetruecolor(imagesx($source_image_tmp),imagesy($source_image_tmp));
imagecopy($source_image,$source_image_tmp,0,0,0,0,imagesx($source_image_tmp),imagesy($source_image_tmp));
$origx = imagesx($source_image);
$origy = imagesy($source_image);
$dest_imagex = 640;
$dest_imagey = 420;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
imagejpeg($dest_image, $filename);
die($url);
}
?>
Вот в чем заключалась моя проблема: я вызывал переменные, которых не было. Я понятия не имею, как это уклонялось от меня целыми днями, но это было так, и теперь это работает отлично.
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
стала
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $origx, $origy);
Где $ source_imagex и $ sourceimagey становятся $ origx и $ origy
Других решений пока нет …