2016-11-15 26 views
1

私は前のページにレンダリングするには、画像の大きさを拡大縮小したり変更することが可能であった場合、私は思っていたイメージ出力のphp base64_decode解像度を変更しますか?

$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); 

を表示するには、次のコードを使用しています。 Google Insightの画像はネイティブで320×240しかないので、たとえば600×600と言うには拡大する必要があります。

助けていただきありがとうございます。

+1

そのためには、画像をデコードし、GDまたはImagickなどの画像を使用して新しい画像を作成する必要があります。データをエコーするだけで画像を拡大することはできません。 –

答えて

0

Base64 dataは、バイナリデータのテキスト表現です。 @MagnusErikssonは、サイズを大きくしたい場合は変換する必要があると述べています。あなたは、PHP内の画像を作成するためにimagecreatefromstringを使用する可能性がimagescaleを使用して、新規にスケーリングされた画像最終的に出力することにより、それをスケールアップすることができソリューション

複雑

$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.'; 
} 

それはあなたがPHP 5.5.18以前、またはPHP 5.6.2以前のPHPのバージョンを持っている場合、あなたはアスペクト比の計算があったようimagescaleへのparams幅と高さの両方を提供する必要があることを言及する価値があります間違っている。

また、あなたの画像は、拡大(拡大)すると、元の画像に比べて品質が劣ります。元の画像には高解像度の高解像度画像を作成するのに十分なデータがありませんそれ。

簡単ソリューション

あなたが実際にあなたがそれを使用する場所を管理している場合、あなたは、単にサイズを大きくするために、画像にCSSスタイルを追加することができ、規模を大きく恩恵を受けていないので。

<img src="myphp.php?url=someurl" style="width:600px;height:auto;" /> 

これは、画像を変更するPHPコードなしで同じ効果を達成します。

+0

パーフェクト、これは正確に必要なものでした。ありがとうございました! – NiftyPixel

関連する問題