PHP& ImageMagick - 将图像代码转换为图像?

时间:2013-03-29 00:25:12

标签: php image imagemagick

我希望能够在不将其保存到服务器的情况下生成图像缩略图。到目前为止,我已经提出了这个代码,但我不确定如何处理$code

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

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

3 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

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

答案 2 :(得分: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);