php gd库图像调整大小函数使用base64_encode

时间:2017-07-10 15:08:17

标签: php base64 gd

resize.php

<?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(),但仍然没有运气,任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:0)

有两种方式为您的形象提供服务。一种是设置内容类型标头,转储原始图像数据,然后通过src标签的img属性引用此脚本的URL。另一种是将base64编码图像嵌入HTML源代码本身。看来你正试图做后者。如果是这种情况,只需删除对header()的通话,因为图片类型信息已由src标记中的img属性提供。