2016-11-15 2 views
1

Ich verwende den folgenden Code ein Bild zu zeigenÄndern Sie die php base64_decode-Auflösung bei der Ausgabe?

$imgstring = file_get_contents("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=".$_GET['url']."&screenshot=true"); 

$imgstring = json_decode($imgstring); 
$imgstring = $imgstring->screenshot->data; 

$imgstring = str_replace("_", "/", $imgstring); 
$imgstring = str_replace("-", "+", $imgstring); 

header('Content-Type: image/png'); 
echo base64_decode($imgstring); 

ich mich gefragt, ob es möglich war, zu skalieren oder die Abmessungen des Bildes zu machen auf der Seite vor zu ändern. Da Google Insight-Bilder nur nativ 320x240 sind, muss ich es beispielsweise auf 600x600 skalieren.

Vielen Dank für jede Hilfe/Eingabe.

+1

Dafür müssten Sie das Bild decodieren und ein neues aus diesem Bild erstellen, entweder mit GD oder Imagick oder ähnlichem. Sie können ein Bild nicht einfach "skalieren", indem Sie die Daten wiedergeben. –

Antwort

0

Base64 Daten sind eine Textdarstellung von Binärdaten. Wie @MagnusEriksson sagte, müssen Sie es konvertieren, wenn Sie seine Größe erhöhen möchten.

komplizierte Lösung

Sie imagecreatefromstring verwenden können, um ein Bild in PHP, skaliert es durch möglicherweise mit imagescale und schließlich Ausgabe Ihres neu skalierten Bild bis zu erstellen.

$imgstring = file_get_contents("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=".$_GET['url']."&screenshot=true"); 

$imgstring = json_decode($imgstring); 
$imgstring = $imgstring->screenshot->data; 

$imgstring = str_replace("_", "/", $imgstring); 
$imgstring = str_replace("-", "+", $imgstring); 

$im = imagecreatefromstring(base64_decode($imgstring)); 
$im = imagescale($im, 600); 
if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} else { 
    header('Content-Type: text/plain'); 
    echo 'An error occurred.'; 
} 

Es ist erwähnenswert, dass, wenn Sie eine PHP-Version von PHP 5.5.18 oder früher haben oder PHP 5.6.2 oder früher, Sie sowohl Breite und Höhe params imagescale als das Seitenverhältnis Berechnung war zur Verfügung stellen müssen falsch.

Auch Ihr Bild, wenn Sie es vergrößern (was es größer macht), wird von schlechter Qualität im Vergleich zum Original sein ... es wird nicht genug Daten im Originalbild geben, um eine schöne hochauflösende Version zu erstellen es.

einfachere Lösung

Wie Sie tatsächlich aus der Erhöhung der Skala nicht profitieren, wenn Sie die Kontrolle haben über, wo es verwendet wird, können Sie einfach CSS-Stile zu dem Bild hinzufügen könnte die Größe zu erhöhen.

Dies würde den gleichen Effekt erzielen, ohne PHP-Code, um das Bild zu ändern.

+0

Perfekt, das war genau das, was benötigt wurde. Vielen Dank! – NiftyPixel

Verwandte Themen