Я использую функцию для изменения размера изображений.Изменение размера изображения дано
Большинство изображений очень сильно изменено. , но кто-то, я не понимаю, почему они только черные. одинаковое изображение всегда дает черный результат. Может быть, это тот тип Jpeg, который дает это ... но как его изменить?
Спасибо!
function create_image($file) {
if(is_file($file)) {
$size = getimagesize($file);
// y =hauteur en pixel
$y = 800;
$x = $size[0]/$size[1]*$y;
//$y = 75; # Taille en pixel de l'image redimensionnée
if ($size) {
if ($size['mime']=='image/jpeg') {
$img_big = imagecreatefromjpeg($file);
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagejpeg($img_mini,$file);
}
elseif ($size['mime']=='image/png') {
$img_big = imagecreatefrompng($file);
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagepng($img_mini,$file);
}
elseif ($size['mime']=='image/gif') {
$img_big = imagecreatefromgif($file);
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagegif($img_mini,$file);
}
// move_uploaded_file($img_mini,$dir."test");
}
return true;
} else {
return false;
}
}
EDIT: Спасибо!
Оптимизация хороша ...
Но результат тот же с изображениями, как: http://www.ericae.fr/test_images/Ripper.jpg изменении размеров отдавания: http://www.ericae.fr/test_images/resized.jpg Все черные :(
С другими изображениями результат хороший! !! Я тестировал около 25 изображений только 2 проблемы ... ПОЧЕМУ?
Спасибо много для оптимизации! но это то же самое для «черного изображения» –
@FlorentPichon Возможно, эти изображения повреждены? Или ваш GD не поддерживает их? Попробуйте создать новый ресурс с этими изображениями и просто сохраните их как JPEG, например: '$ img = imagecreatefromjpeg ('Ripper.jpg'); imagejpeg ($ img, './test.jpg'); '. Будет ли черный экран? Если да, ваш GD не поддерживает это изображение. Если нет - попробуйте проверить массив '$ size', сделал ли PHP правильные данные из изображения? – namikiri
Я тестировал этот код на своем сервере, и он отлично работал с вашим изображением: http://test.nyanserver.com/ripper/Ripper.jpg Итак, я думаю, вам нужно посмотреть на свой комплект GD. – namikiri