J'ai écrit cette petite fonction pour générer des images miniatures d'une plus grande source jpg/jpeg/png, et fonctionne parfaitement sur les images jpg/jpeg en fonction de la taille de l'image png, va bloquer la fonction à un point indéterminé. Les petites images 300x200 fonctionnent, mais quelque chose comme 2880x1800 ne fonctionnera pas.PHP: Générer des images miniatures PNG à partir de la source PNG bloque la fonction basée sur la taille PNG
fonction Voici mon (annoté):
function make_thumb($filename, $destination, $desired_width) {
$extension = pathinfo($filename, PATHINFO_EXTENSION);
// Read source image
if ($extension == 'jpg' || $extension == 'jpeg') {
$source_image = imagecreatefromjpeg($filename);
} else if ($extension == 'png') {
$source_image = imagecreatefrompng($filename); // I think the crash occurs here.
} else {
return 'error';
}
$width = imagesx($source_image);
$height = imagesy($source_image);
$img_ratio = floor($height/$width);
// Find the "desired height" of this thumbnail, relative to the desired width
$desired_height = floor($height * ($desired_width/$width));
// Create a new "virtual" image
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
// Copy source image at a resized size
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
// Create the physical thumbnail image to its destination
if ($extension == 'jpg' || $extension == 'jpeg') {
$source_image = imagejpeg($virtual_image, $destination);
} else if ($extension == 'png') {
$source_image = imagepng($virtual_image, $destination, 1);
} else {
return 'another error';
}
}
La seule documentation que j'ai trouvé que mentionné me problèmes similaires était this. Est-ce mon problème? Des solutions? Pourquoi fait-il cela?