2016-11-15 44 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圖像本身只有320x240,因此我需要將其擴展爲例如600x600。

感謝您的幫助/輸入。

+1

對於這一點,你就需要對圖像進行解碼,並創建該圖像一個新的,無論是使用GD或Imagick或相似。您只能通過回顯數據來「放大」圖像。 –

回答

0

Base64數據是二進制數據的文本表示。正如@MagnusEriksson所說的,如果你想增加它的大小,你必須轉換它。

複雜的解決方案

您可以使用imagecreatefromstring內PHP創建圖像,通過可能使用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或更早版本,或PHP 5.6.2或更早的版本,你需要提供寬度和高度PARAMS到imagescale的寬高比計算爲不正確。

而且你的形象,因爲你是向上擴展(使它更大),將質量差相比原來......不會有原始圖像中足夠的數據來創建一個漂亮的高分辨率版本它。

簡單的解決方案

當你實際上並沒有從增加的規模,如果你有控制的地方時,你可以簡單地添加CSS樣式形象,增加大小中受益。

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

這將實現相同的效果,沒有任何PHP代碼來改變圖像。

+0

完美,這正是需要的。謝謝! – NiftyPixel