用php动态缩略图

时间:2011-07-12 13:12:15

标签: php image thumbnails

我想动态生成缩略图,我在帖子中找到了一个使用SimpleImage类的推荐,它是这样的用法:

header('Content-Type: image/jpeg');
include('SimpleImage.php');
$image = new SimpleImage();
$image->load('picture.jpg');
$image->resizeToWidth(150);
$image->output();

,输出方法如下:

function output($image_type=IMAGETYPE_JPEG) {

    if( $image_type == IMAGETYPE_JPEG ) {
       imagejpeg($this->image);

    } elseif( $image_type == IMAGETYPE_GIF ) {
       imagegif($this->image);

    } elseif( $image_type == IMAGETYPE_PNG ) {
       imagepng($this->image);

    }
}

这适用于输出图像,因为我在客户端收到了类似二进制代码的东西。但我想要的是缩略图滑块,所以我需要所有图像都在< ul>< / ul>中,我尝试使用ajax:

更新

function thumb($files){
    echo '<ul>';
    foreach($files as $file){
        $thumb = new Thumbnail();
        $thumb->load($file->getFilePath());
        $thumb->resizeToWidth(80);
        echo '<li>'.$thumb->output().'</li>';
    };
    echo '</ul>';
}

但这似乎不起作用。如何获得这样的输出,以便我可以做一个滑块库。

<ul>
  <li><img src="path here"></li>
  <li><img src="path here"></li>
</ul>

1 个答案:

答案 0 :(得分:0)

你混淆了两件事:图像的html布局和图像的缩放。你需要在一个单独的php文件中保留你的缩放代码 - 这是完全没问题的,比如scale.php - 就像这样:

<?php
    header('Content-Type: image/jpeg');
    include('SimpleImage.php');
    $image = new SimpleImage();
    $image->load($_GET['image']);
    $image->resizeToWidth(150);
    $image->output();
?>

在你的主要php中,你会得到这样的代码:

<?php
    echo '<ul>';
    foreach($files as $file){
        echo '<li><img src="scale.php?image=' . $file . '"/></li>';
    }
    echo '</ul>';
?>