使用PHP生成缩略图,适用于各种文件格式

时间:2009-06-16 09:22:05

标签: php imagemagick ghostscript

我已经为他的客户在上传工具上提出了客户请求,但在上传后会创建一个图像缩略图。

所有正常的图像都可以,但他在谈论.psd,.pdf,.eps,.ppt

好好看看我认为与图像匹配& ghostscript将迎合大部分这些但我无法找到PPT或EPS的解决方案。

我希望imagemagick能够做eps,因为它可以做psd。

有关EPS或PPT文件格式的任何建议。

谢谢你能否提出建议。

4 个答案:

答案 0 :(得分:3)

我迟到了我认识的派对,但是......

这是我用于.PDF,.EPS和.AI缩略图的内容。 (假设安装了所有必要的ImageMagick发行版)

$file = 'filename.pdf.eps.ai';

$cache = $_SERVER['DOCUMENT_ROOT'].'/cache/';//ensure dir is writeable

$ext = "jpg";//just the extension

$dest = $cache.$file.'.'.$ext;

if (file_exists($dest)){
    $img = new imagick();
    $img->readImage($dest);
    header( "Content-Type: image/jpg" );
    echo $img;
    exit;

 } else {

    $img = new imagick($_SERVER['DOCUMENT_ROOT'].'/'.$file.'[0]');
    $img->setImageFormat($ext);

    $width = $img->getImageheight();
    //$img->cropImage($width, $width, 0, 0);
    $img->scaleImage(105, 149, true);

    $img->writeImage($dest);

    header( "Content-Type: image/jpg" );
    echo $img;
    exit;
}

不知道它为什么会起作用,但确实如此 - 一个代码可以统治它们吗?

答案 1 :(得分:1)

PPT是一个powerpoint演示文稿。因此,创建一个PPT图像需要一些可以解决此问题的库。

以下是一些可以帮助您的资源。

EPS是一种矢量格式,因此除非您将图像作为矢量对象,否则您将无法正确执行此操作。

答案 2 :(得分:0)

只是一些想法 - 这些都没有经过我自己的测试。

<强> EPS

您应该可以使用ghostscript将EPS转换为PDF。使用imagemagick&amp; ghostscript你可以将PDF转换为某种位图格式(GIF,PNG或JPG)。

<强> PPT

这似乎有点复杂。如果您使用的是Windows计算机,则可以在一个小型手写转换器中使用Powerpoint API。另一种可能性是使用Apache POI-HSLF,它是Powerpoint文件格式的Java API。这将需要Java程序进行转换过程。最后的手段可能是研究Powerpoint binary file format,看看是否有例如

。可以提取的缩略图(可能用于Windows资源管理器中的文件图标)。

答案 3 :(得分:0)

您可以找到一些免费图标集,并为所有.ppt文件使用默认图标,对所有.eps使用另一个图标集。然后,您可以针对无法转换为图像的所有文件格式(例如音频文件)进一步扩展此格式。不是完美的解决方案,但用户可能会感觉更舒适,然后只需要文本。