Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    ridimesionamento immagini jpg

    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:
    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);
    }
    Il problema è che alcune immagini jpg dopo il ridimesionamento sono tutte nere.
    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.

  2. #2
    Facendo il debug noto che mi imposta subito la variabile " $image = imagecreatefromjpeg($sourceImage); " a False

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Ho lo stesso problema. Ho notato che capita solo con le foto caricate con una certa fotocamera.
    Forse la fotocamera comprime con un algoritmo non leggibile da php?

  4. #4
    Mannaggia!!!! Quindi dici che è un problema del file? Non hai ancora trovato un modo per risolvere?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Purtroppo no, non ho provato rielaborando l'immagine con un programma.

  6. #6
    Se ti interessa, vorrei aggiungere una mia idea che potrebbe essere utile anche a te nel merito di questa questione.
    Ho provato ad aprire l'immagine jpg che ridimensionata diventa nera, con un programma di fotoritocco.
    Il risultato è che il programma va in errore.
    Poi ho rinominato l'estensione della foto in png e il programma di fotoritocco l'ha aperta.

    In Windows se rinomini una jpg in png e viceversa la foto viene visualizzata comunque.

    Il mio sospetto è quindi che la foto che stò esaminando (che ho scaricato da internet), sia stata rinominata da png a jpg.
    ovviamente la funzione php si accorge che quella non è una jpg e quindi sballa tutto.

  7. #7
    Consiglio CALDAMENTE l'utilizzo di una libreria per operare sulle immagini: http://wideimage.sourceforge.net/

  8. #8
    grazie k.b

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.