在PHP中创建缩略图并显示而不保存

时间:2017-05-24 06:15:16

标签: php image thumbnails

我有图像阵列

$images[
'image1.jpg',
'image2.jpg',
'image3.jpg',
'image4.jpg',
'image5.jpg',
'image6.jpg',
'image7.jpg',
 .....
'image2500.jpg'
];

这是我显示图像的循环

<?php foreach($images as $img) { ?>
    <img src = "path_to_my_image/<?=$img;?>">
<?php } ?>

一切都很好,但是在我的阵列中有时可能会有2500到3000张图像,并且它的工作速度很慢。

如何在循环中创建缩略图而不保存和显示? 要么 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

听起来你应该压缩图像! 以下是针对优化服务的免费试用版,但许多服务存在且可以自行编码。

https://kraken.io/web-interface

这是一个PHP包,可以在运行时进行,如果有必要的话!

http://php.net/manual/en/book.imagick.php

答案 1 :(得分:0)

如果你想为每个图像使用PHP生成一个缩略图而不保存那个缩略图,那么你可以尝试这样一个简单的脚本。

<?php
    /* simplethumb.php */
    $file=!empty( $_GET['file'] ) ? $_GET['file'] : false;
    $percent=!empty( $_GET['percent'] ) ? $_GET['percent'] : 10;


    try{
        if( !$file ) throw new Exception('Source file does not exist or cannot be found');
        $source = @imagecreatefromjpeg( $file );

        if( $source && file_exists( $file ) ){
            clearstatcache();

            list( $w, $h, $t, $a ) = getimagesize( $file );
            $nw = $w * ($percent/100);
            $nh = $h * ($percent/100);

            $thumb = imagecreatetruecolor( $nw, $nh );
            @imagecopyresized( $thumb, $source, 0, 0, 0, 0, $nw, $nh, $w, $h );

            header('Content-type: image/jpeg');
            @imagejpeg( $thumb );
            @imagedestroy( $thumb );
        }
    }catch( Exception $e ){
        header('HTTP/1.1 400 Bad Request',true,400);
        exit( $e->getMessage() );
    }
?>

为你的循环

foreach($images as $img) {
    echo "<img src='simplethumb.php?file=path_to_my_image/{$img}&percent=25' />";
}