2017-07-10 4 views
-1

resize.phpphp gd Bibliothek Bildfunktion Ändern der Größe base64_encode mit

<?php 
function resizeImg($new_width, $new_height, $get_image, $quality){ 
    ini_set("allow_url_fopen", 1); 
    list($old_width, $old_height) = getimagesize($get_image); 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromjpeg($get_image); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); 
    header('Content-Type: image/jpeg'); 
    $img = imagejpeg($image_p, NULL, $quality); 
    echo base64_encode($img); 
} 
$new_width = $_GET['w']; 
$new_height = $_GET['h']; 
$get_image = $_GET['img']; 
$get_quality = $_GET['q']; 
if($get_quality == NULL){$quality = "80";} 
else{$quality = $get_quality;} 
?> 
<img src="data:image/jpeg;base64,<?php echo resizeImg($new_width, $new_height, $get_image, $quality) ?>" /> 

den obigen Code funktioniert nur, wenn ich die Funktion außerhalb des <img> Tag nennen, aber ich benötige es innerhalb der Image-Tag aufgerufen werden.

Ich habe versucht, ohne base64_encode() zu verwenden, aber immer noch kein Glück, jede Hilfe wird geschätzt.

+0

Ihre Funktion endet mit echo und gibt nichts zurück, dann verwendet Ihr Funktionsaufruf erneut echo. Lassen Sie Ihre Funktion den Wert zurückgeben, anstatt ihn zu wiederholen. –

+0

@AlexHowansky hat das versucht, hat nicht funktioniert. Was ich zum Schluss gekommen bin, ist, dass das Setzen der 'header ('Content-Type: image/jpeg')' die Seitenhierarchie ändert und die Seite das '' Tag nicht erkennt. Macht das für Sie einen Sinn? –

+0

Mögliches Duplikat von [Größenänderung Bildfunktion Implementierung inpage] (https://stackoverflow.com/questions/44988132/resizing-image-function-implementation-inpage) – timclutton

Antwort

0

Es gibt zwei Möglichkeiten, Ihr Bild zu bedienen. Eine besteht darin, den Inhaltstyp-Header festzulegen, die Rohbilddaten abzulegen und dann über das src-Attribut eines img-Tags auf die URL dieses Skripts zu verweisen. Die andere Möglichkeit besteht darin, das base64-kodierte Bild in die HTML-Quelle selbst einzubetten. Es scheint, dass Sie versuchen, Letzteres zu tun. Wenn dies der Fall ist, entfernen Sie den Anruf einfach unter header(), da die Bildtypinformationen bereits durch das src-Attribut in Ihrem Tag img bereitgestellt werden.

+0

Ich habe das verstanden und ja ich benutze die letztere Methode, aber Sie sehen als sobald ich '' header() 'lösche, werden auf der Seite Rohbilddaten als Ergebnis ausgegeben, während vorher nur ein leeres Bildfeld angezeigt wurde (wie Bild nicht geladenes Feld von html). –

Verwandte Themen