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

    Problema con imagecreatefromstring

    ciao!
    sul db ho un campo salvato in formato html.
    all'imtermo possono esserci delle immagini in base64.
    quando invio il form vorrei estrapolarle dal testo e salvarle in una directory:
    Codice PHP:
                $doc = new DOMDocument();
                
    $doc->loadHTML($_POST['testo']);
                
    $xPath = new DOMXPath($doc);
                
    $nodo $xPath->query('//img[@src]');
                foreach (
    $nodo as $nodo) {
                    
    $img base64_decode($nodo->getAttribute('src'));
                    
    $m imagecreatefromstring($img);
                    
    var_dump($m); // FALSE
                    
    if ($m !== FALSE) {
                        
    imagejpeg($m'../IMMAGINI_ARTICOLI/' $_POST['titolo']);
                        
    imagedestroy($m);
                    }
                } 
    solo che il var_dump mi da sempre false e l'immagine non viene creata.
    ovviamente l'immagine c'è e se la stampo sulla pagina si vede.

    sono ore che provoi a capire il perchè
    avete un'idea?

  2. #2
    cosa c'è in $nodo->getAttribute('src') ? puoi fare un echo/dump please?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    ciao!
    ecco il dump di $nodo->getAttribute('src'):
    codice:
    string(12775) "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QCKRXhpZgAATU0AKgAAAAgAA1EAAAQAAAABAAA............kv6bP0foooroPrAooooAKKKKAP//Z"
    dovrebbe essere giusto!

  4. #4
    a leggere la documentazione http://php.net/manual/en/function.im...fromstring.php il metodo si aspetta solo un base_64 encoded, non quella struttura che hai te. nel tuo caso dovresti fare:

    Codice PHP:

     
    foreach ($nodo as $nodo) { 

    $matches = array();
    if(
    preg_match('/^data: ([^;]+);base64(.*)$/'$nodo->getAttribute('src'),$matches)){
      
    $imgdata $matches(2);
      
    $imgtype $matches(1);
      
    $m imagecreatefromstring(base64_decode($imgdata));

      if (
    $m !== FALSE) { 
               
    imagejpeg($m'../IMMAGINI_ARTICOLI/' $_POST['titolo']); 
               
    imagedestroy($m); 
         }
      }


    NOTA: dopo data: togli lo spazio, l'ho messo altrimenti il forum mi metteva la faccina
    o qualcosa del genere
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    grazie mille!!!
    senza volerlo mi hai risolto anche quest'altro thread: http://forum.html.it/forum/showthrea...readid=1537165

    anche li mi mancava lo stesso pezzo.
    io pensavo che quella parte la ""eliminasse/convertisse"" da solo (notare virgolette, non so come altro spiegarmi).

    cmq così funzionao entrambi!
    lo riporto anche di la.

  6. #6
    php.net è una fonte molto preziosa di informazioni, soprattutto perchè si trovano molti esempi. Nel tuo caso avresti dovuto notare la differenza di formato tra il tuo caso e quanto detto dal manuale. Una cosa: tu dai per scontato che le immagini siano jpeg, però data: è stato messo appositamente per specificarne il formato. Potresti fare un controllo per vedere se effettivamente è una jpg o altro.

    buon continuo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    in verità su php.net a leggere la doc ci vado sempre.
    solo che cmq non avevo capito quel passaggio.

    si per l'estensione ho già implementato un controllo!!

    grazie ancora.
    ciao!

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.