У меня есть следующий код PHP …
$destination_image_x = "235";
$destination_image_y = "230";
$destination_image = imagecreatetruecolor($destination_image_x, $destination_image_y);
$source_image_x = imagesx($temp_profile_picture_converted);
$source_image_y = imagesy($temp_profile_picture_converted);
$temp_profile_picture_converted = imagecopyresampled($destination_image, $temp_profile_picture_converted, 0, 0, 0, 0, $destination_image_x, $destination_image_y, $source_image_x, $source_image_y);
imagejpeg($temp_profile_picture_converted, $user_profile_picture_filename,'75');
imagedestroy($temp_profile_picture_converted);
Функция этого кода — масштабировать переданное ему изображение и сохранять его в указанном каталоге. Я могу сохранить изображение, используя «imagejpeg», как обычно, если я пропущу фрагмент изменения размера. Переменная «$ temp_profile_picture_converted» назначается изображению jpg, которое я создал из загруженного изображения пользователя с помощью «imagecreatefromjpeg». (Или imagecreatefrompng, или imagecreatefromgif и т. Д.)
Вы используете ту же переменную $temp_profile_picture_converted
дважды в следующей строке. Функция imagecopyresampled()
возвращает логическое значение и перезаписывает изображение, которое содержит эта переменная. Возвращаемое значение из этой функции только для проверки успеха. Измените это на:
if (! imagecopyresampled($destination_image, $temp_profile_picture_converted, 0, 0, 0, 0, $destination_image_x, $destination_image_y, $source_image_x, $source_image_y)){
// then give error message...
}
ОБНОВИТЬ
Однако у вас есть другие ошибки. Вам нужно изменить первый параметр imagejpeg()
, Я также изменил размер переменных из строк в числа — не уверен, что это имеет значение.
imagejpeg($destination_image, $user_profile_picture_filename,75);
Я успешно запустил следующий код
$destination_image_x = 235;
$destination_image_y = 230;
$source_image_x = imagesx($temp_profile_picture_converted);
$source_image_y = imagesy($temp_profile_picture_converted);
$destination_image = imagecreatetruecolor($destination_image_x, $destination_image_y);
imagecopyresampled($destination_image, $temp_profile_picture_converted, 0, 0, 0, 0, $destination_image_x, $destination_image_y, $source_image_x, $source_image_y);
imagejpeg($destination_image, $user_profile_picture_filename,75);
imagedestroy($temp_profile_picture_converted);
imagedestroy($destination_image);
Обратите внимание, что я также добавил последнее утверждение imagedestroy($destination_image);
Других решений пока нет …