1

我有一些具有一定尺寸的图像,我想按比例缩小它们。

我不想将它们保存为缩放,我想每次在浏览器中加载图像时重新调整它们的大小

我看过WideImage图书馆和imagecopyresampled

如果我使用WideImage::load($_GET['img'])->resize(500, 300)->output('jpg', 90);并回显这个,我会从图像而不是实际图像中获取源代码。

我也找到了这个方法

public function resizeImage($originalImage,$toWidth,$toHeight)
    {

        list($width, $height) = getimagesize($originalImage);
        $xscale=$width/$toWidth;
        $yscale=$height/$toHeight;

        if ($yscale>$xscale){
            $new_width = round($width * (1/$yscale));
            $new_height = round($height * (1/$yscale));
        }
        else {
            $new_width = round($width * (1/$xscale));
            $new_height = round($height * (1/$xscale));
        }


        $imageResized = imagecreatetruecolor($new_width, $new_height);
        $imageTmp     = imagecreatefromjpeg ($originalImage);
        imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        return $imageResized;
    }

如果我将图像传递给它并回显我得到的结果resource(192) of type (gd)而不是图像。

我也不确定要传递给这个方法的图像路径,http://.....jpg或者/var/www/images/....jpg

任何人都可以对此有所了解吗?看起来我真的不明白这个过程是如何工作的

谢谢

4

2 回答 2

2

将本地文件名传递给方法而不是 url

您需要设置要解释为图像的图像的 http 标头

header('Content-Type: image/jpeg');
于 2012-07-18T22:08:07.420 回答
1

我正在使用 SimpleImage,它真的很简单。看:使用 PHP 调整图像大小。但这不是你的问题。

您的代码:return $imageResized;仅返回 gd 对象,而不是真实图像。你需要改造它,你可以做两件事:

  1. 通过脚本 url 加载图像(例如http://localhost/image_converter.php?img=my_img.jpg:)
  2. 将图像数据作为 URI 方案返回(使用 URI 不是一个好习惯,因为您必须使用输出缓冲等……而且 HTML 数据非常庞大,因为图像直接在其中……查看:http://en .wikipedia.org/wiki/Data_URI_scheme#Examples

(使用您的方法的示例)

您需要使用header('Content-Type: image/jpeg');. 你必须imagejpeg ( resource $image [, string $filename [, int $quality ]] )对 GD 对象使用函数

<?php
/* image_converter.php */
$image = new Image(); //Will use method in unknown class found by you
$output = $image->resizeImage($_GET['my_img'],50,50); //We have gd object in $output
//!! DO NOT USE GET WITHOUT SECURING IT!
header('Content-Type: image/jpeg');
imagejpeg($output); //This displays image dataa converted in jpg
exit;
?>

称为:<img src="http://localhost/image_converter.php?img=my_img.jpg" alt="" />

于 2012-07-18T22:42:40.337 回答