图像调整大小而不保存

时间:2018-01-30 18:14:58

标签: php

我正在尝试使用PHP从网址抓取jpg图像并调整其大小,然后将其显示在网页中,而无需保存新的已调整大小的图像。 我的问题是,当我用这个脚本测试页面时,我的浏览器中只显示一个小的空白方块,图像没有显示在页面上。

    <?php
       $source_image = imagecreatefromjpeg("https://www.******.com/blog/post/b/l/health.jpg");
       $source_imagex = imagesx($source_image);
       $source_imagey = imagesy($source_image);
       $dest_imagex = 300;
       $dest_imagey = 200;
       $dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
       imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, 
       $dest_imagex, 
       $dest_imagey, $source_imagex, $source_imagey);
       header("Content-Type: image/jpeg");
       imagejpeg($dest_image,NULL,80);
   ?>

<img src='<?php echo "$dest_image";?>'>

2 个答案:

答案 0 :(得分:1)

首先确保图片的网址正确无误。让我们假设您有一些resize.php用于调整图片大小。

<强> resize.php

<?php
       $source_image = imagecreatefromjpeg("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSKTUtEWtyngG0EVhrOOZqJYhVPoFg5rzma6Xgn6Sy-RQCDCT950g");
       $source_imagex = imagesx($source_image);
       $source_imagey = imagesy($source_image);
       $dest_imagex = 100;
       $dest_imagey = 100;
       $dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
       imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, 
       $dest_imagex, 
       $dest_imagey, $source_imagex, $source_imagey);
       header("Content-Type: image/jpeg");
       imagejpeg($dest_image,NULL,80);
   ?>

在这里,我刚刚更改了网址,我确定存在

然后在某些html中使用它:

<img src = 'resize.php' />

答案 1 :(得分:1)

您将图片资源($dest_image)转储到图片的源属性中,这是没用的。

如果要将图像打印到HTML响应中而不必将其保存到文件中,则需要:

  • 首先,从imagejpeg获取输出,这是结果图像的原始字节
  • 然后,将这些字节编码为Base64字符串

用这些代替代码的最后一行应该可以解决问题:

<?php
// [More code]
ob_start();
imagejpeg($dest_image, NULL, 80);
$image_bytes = ob_get_clean();
?>

<img src="data:image/jpeg;base64,<?php echo base64_encode($image_bytes); ?>">