1

我希望能够生成图像缩略图而不将它们保存到服务器。到目前为止,我已经想出了这段代码,但我不确定如何处理$code.

$code = system("convert galleries/13_0.jpg -resize 400x270 /dev/stdout");

我将如何插入$codePHP/HTML 以将原始图像代码显示为 jpg?

4

3 回答 3

1

我建议您不要像您所描述的那样从系统中执行此操作。

PHP 有做这类事情的库。

http://www.php.net/manual/en/ref.image.phphttp://php.net/manual/en/book.imagick.php

还有一些库包装了这些用于操作图像的本机函数。https://imagine.readthedocs.org/en/latest/

这样,您的所有代码都在 PHP 中,并且您不依赖系统执行任何操作(前提是 PHP 已使用所描述的库编译。它们是大多数 PHP 构建中可用的标准库,如果不包含它们,您可以启用它们)。

编辑:我提倡你。

  • 打开源图像。
  • 转换源图像
  • 返回源图像

想象一下,您会这样做:

$imagine = new Imagine\Gd\Imagine();
$size    = new Imagine\Image\Box(400, 270);

$imagine->open('/path/to/large_image.jpg')
->resize($size)
->show('jpg');
于 2013-03-29T00:38:39.583 回答
0

如果 $code 是原始数据,您是否可以有另一个文件 getimage.php 将数据写出但将标题内容类型设置为 image/JPEG?所以你的 img src 会是 getimage.php?image=13_0.jpg 例如?

于 2013-03-29T00:37:50.470 回答
0

我会把它保存到内存中,然后读取它,然后删除它。/dev/shm是大多数 Linux 系统上的 ramdrive。

$tmp = '/dev/shm/'.uniqid('',true).'.jpg';
system("convert galleries/13_0.jpg -resize 400x270 $tmp");
header("Content-Type: image/jpeg");
header('Content-Length: '.filesize($tmp));
readfile($tmp);
unlink($tmp);
于 2013-03-29T05:27:59.203 回答