Salve,
mi stà capitando che alcune immagini jpg dopo il ridimensionamento vengano tutte nere.
Di seguito il codice della funzione che utilizzo per ridimesionare le immagini:
Il problema è che alcune immagini jpg dopo il ridimesionamento sono tutte nere.codice:// $sourceImage = percorso immagine da ridimensionare // $id_image = id che poi diventerà la parte iniziale del nome del nuovo file // $image_type = stringa che diventerà parte del nome del nuovo file // $maxWidth,$maxHeight = dimensioni del nuovo file function img_product_resize($sourceImage,$id_image,$image_type,$maxWidth,$maxHeight) { $imagesize = getimagesize($sourceImage); $larghezza_origine = $imagesize[0]; $altezza_origine = $imagesize[1]; if (($larghezza_origine < $maxWidth) && ($altezza_origine < $maxHeight)) { $newHeight = $altezza_origine; $newWidth = $larghezza_origine; }elseif ($larghezza_origine >= $altezza_origine) { $newWidth = intval($maxWidth / 1.1); $newHeight = intval((($maxWidth * $altezza_origine) / $larghezza_origine) /1.1); } else { $newHeight = intval($maxHeight / 1.1); $newWidth = intval((($maxHeight * $larghezza_origine) / $altezza_origine) /1.1); } $positionX = ($maxWidth - $newWidth) / 2; $positionY = ($maxHeight - $newHeight) / 2; list($imgWidth, $imgHeight) = getimagesize($sourceImage); ini_set("gd.jpeg_ignore_warning", 1); $image = imagecreatefromjpeg($sourceImage); $ni = imagecreatetruecolor($maxWidth,$maxHeight); $white = imagecolorallocate($ni, 255, 255, 255); imagefill($ni, 0, 0, $white); $newImage = imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $imgWidth, $imgHeight); imagecopy($ni, $newImage, $positionX, $positionY, 0, 0, $newWidth, $newHeight); $array_id = str_split($id_image); $lunghezza_array = count($array_id); $percorso_iniziale = '../img/p/'; for($i=0;$i<$lunghezza_array;$i++) { if (!file_exists($percorso_iniziale . $array_id[$i])) { mkdir($percorso_iniziale . $array_id[$i]); } $percorso_iniziale .= $array_id[$i] .'/'; } $percorso_finale = $percorso_iniziale; imagejpeg($ni, $percorso_finale.$id_image.'-'.$image_type.'.jpg', 50); copy($sourceImage, $percorso_finale.$id_image.'.jpg'); imagedestroy($ni); }
Devo dire che su un processo di più di 6000 immagini elaborate solo una 50ina risultano tutte nere.
Però mi sembra strano visto che sono tutte jpg che vengono ridimensionate sempre in jpg.
Sbaglio qualcosa?
Grazie.

Rispondi quotando