Konwertuj wyjście GD Na base64

Cóż, moje pytanie jest bardzo proste, chcę tylko przekonwertować wyjście imagepng / imagejpg na base64, jak to zrobić ? prawidłowy sposób jest z przechwytywania bufora wyjściowego ? dzięki.

Author: Filip Roséen - refp, 2011-12-18

2 answers

imagejpeg/imagepng nie zwraca żadnych danych, zapisuje dane obrazu bezpośrednio do strumienia wyjściowego (lub do pliku).

Jeśli chcesz przechwycić te dane zakodowane jako base64 najprostszą metodą jest użycie funkcji sterowania wyjściowego PHPS , a następnie użycie base64_encode na $image_data.

ob_start (); 

  imagejpeg ($img);
  $image_data = ob_get_contents (); 

ob_end_clean (); 

$image_data_base64 = base64_encode ($image_data);
 52
Author: Filip Roséen - refp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-08 22:33:09

Najczęstszym przypadkiem użycia dla zakodowanych obrazów base64 jest wyjście HTML. Chciałbym zaproponować bardziej kompletne rozwiązanie tej sprawy. Dodałem również możliwość przełączania formatów wyjściowych obrazów.

// Example
$gdImg = imagecreate( 100, 100 );
imagecolorallocate( $gdImg, 0, 0, 0 );
echo gdImgToHTML( $gdImg );
imagedestroy( $gdImg );

// Create an HTML Img Tag with Base64 Image Data
function gdImgToHTML( $gdImg, $format='jpg' ) {

    // Validate Format
    if( in_array( $format, array( 'jpg', 'jpeg', 'png', 'gif' ) ) ) {

        ob_start();

        if( $format == 'jpg' || $format == 'jpeg' ) {

            imagejpeg( $gdImg );

        } elseif( $format == 'png' ) {

            imagepng( $gdImg );

        } elseif( $format == 'gif' ) {

            imagegif( $gdImg );
        }

        $data = ob_get_contents();
        ob_end_clean();

        // Check for gd errors / buffer errors
        if( !empty( $data ) ) {

            $data = base64_encode( $data );

            // Check for base64 errors
            if ( $data !== false ) {

                // Success
                return "<img src='data:image/$format;base64,$data'>";
            }
        }
    }

    // Failure
    return '<img>';
}
 4
Author: Lachmanski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 11:56:52