2017-07-10 90 views
-1

resize.php調整功能PHP的GD庫圖像使用BASE64_ENCODE

<?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) ?>" /> 

上面的代碼只能如果我叫<img>標籤以外的功能,但我需要它的圖像標籤內調用。

我已嘗試不使用base64_encode()但仍然沒有運氣,任何幫助表示讚賞。

+0

你的函數以echo結尾並且什麼都不返回,那麼你的函數調用再次使用echo。讓你的函數返回值而不是回顯它。 –

+0

@AlexHowansky嘗試過,沒有奏效。我得出的結論是,設置header('Content-Type:image/jpeg')'改變頁面層次結構,因此頁面不能識別''標籤。這對你有意義嗎? –

+0

[resize圖像函數實現inpage]的可能的副本(https://stackoverflow.com/questions/44988132/resizing-image-function-implementation-inpage) – timclutton

回答

0

有兩種方式爲您的圖像提供服務。一種方法是設置內容類型標題,轉儲原始圖像數據,然後通過img標記的src屬性引用此腳本的URL。另一種是將base64編碼圖像嵌入到HTML源代碼中。看起來你正在嘗試做後者。如果是這種情況,只需將呼叫移除至header(),因爲圖像類型信息已由img標記中的src屬性提供。

+0

我明白,是的,我使用後一種方法,但你看到一旦我刪除了'header()',頁面就會將原始圖像數據作爲結果轉儲,然後才顯示一個空的圖像框(如圖像未加載的HTML框)。 –