-2

我有一个简单的 PHP 脚本,使用户能够在服务器上上传图像。我在帮助将这些图像显示为 HTMl 页面中的缩略图,然后让用户单击这些缩略图,然后原始图片显示在新页面中。

我可以为此使用直接的 HTML 吗?还是我需要一些 javascript 或 PHP 变体的组合?

我知道在stackoverflow上有很多关于这个的问题,我已经尝试过了,但没有什么是我所追求的。

我宁愿在“飞行”时创建缩略图,而不是在用户上传图像时亲自创建每个缩略图。

那么基本上我应该使用什么语言来做到这一点?如果可能的话,我也可以有一些源代码吗?

谢谢

4

3 回答 3

0

每次请求缩略图时都创建缩略图是一个非常糟糕的主意 - 这需要大量的处理能力,如果在第一次创建缩略图时将它们保留在身边,很容易节省。我建议将缩略图创建放在处理文件上传的 php 脚本中,以便您将图像及其缩略图同时保存到磁盘。您也可以将缩略图保存在内存中,或者等到第一次请求创建它,但无论哪种方式,您都无法在每次请求时重新生成它。

通过简单地设置宽度和/或高度属性,可以使用 html 来更改图像的大小:

<img src='foo.jpg' alt='foo' width='500' height='300'/>

但是,如果您不确定用户稍后是否想要查看完整尺寸的图像,则这是一个坏主意。原因是缩略图的文件大小比完整图像小:如果客户只想查看缩略图,那么您不想浪费带宽(= 您的金钱和客户的时间)向他们发送完整图像。

至于你的界面,你不需要 javascript 来完成它,只需要 html。但是,您将需要一个服务器端脚本来创建您的 html 页面链接到的缩略图。

于 2012-05-07T02:25:44.083 回答
0

那里有很多 php 缩略图脚本。

您要么使用重写器来显示原始路径,但服务器提供 php 缩略图版本。或者您必须将网址更改为:

<img src="thumb.php?file=path/to/picture.jpg&size=128" />

强大的东西

phpThumb

就这么两个。最好配置为使用缓存文件夹。我在工作中使用了第一个脚本的修改版本。

于 2012-05-07T02:41:56.923 回答
0

这是一个 PHP 脚本,您可以构建 appon 仅适用于 jpg 图像。

它将扫描一个目录,将图像标准化为合适的尺寸,并即时制作拇指,然后在下一次刷新时,它不需要重新处理图像,因为它已经存在于拇指目录中。希望能帮助到你...

脚本放置

Root>
    thisscript.php
    /images/
           someimage.jpg
           someimage2.jpg

这个脚本.php

<?php
// config section
$path = "./images/";
$thpath = $path."thumbs/";
// end configration

// Open the directory
$do = dir($path);
// now check if the thumb dir is available if not, create it!!
if (!is_dir($thpath)){
    mkdir($thpath);
}

$output = '<div>';
while (($file = $do->read()) !== false){
    if (is_dir($path.$file)){
        continue;
    }else{
        $info = pathinfo($path.$file);
        $fileext = $info['extension'];
        if (strtolower($fileext) == 'jpg'){
            if (!is_file($thpath.$file)){           
                //Normalize Super lrg Image to 750x550          
                thumb_it($path, $file, $path,750,550,99);
                //Make Thumb 200x125
                thumb_it($path, $file, $thpath,200,125,99);

                $output .='<p><a href="'.$path.$file.'"><img src="'.$thpath.$file.'" title="" alt="" /></a></p>';
            }else{

                $output .='<p><a href="'.$path.$file.'"><img src="'.$thpath.$file.'" title="" alt="" /></a></p>';
            }
        }
    }
}
$output .='</div>';

echo $output;

//Functions
function thumb_it($dirn, $file, $thumbdir,$rwidth,$rheight,$quality){
    set_time_limit(0);

    $filename = $dirn.$file;
    $thfilename = $thumbdir.preg_replace('/[^a-zA-Z0-9.-]/s', '_', $file);
    // get the filename and the thumbernail directory
    if (is_file($filename)){
        // create the thumbernail from the original picture
        $im = @ImageCreateFromJPEG($filename);
        if($im==false){return false;}
        $width = ImageSx($im); // Original picture width is stored
        $height = ImageSy($im); // Original picture height is stored

        if (($width < $rwidth) && ($height < $rheight)){
            $n_height = $height;
            $n_width = $width;
        }else{
            // saveing the aspect ratio
            $aspect_x = $width / $rwidth;
            $aspect_y = $height / $rheight;

            if ($aspect_x > $aspect_y){
                $n_width = $rwidth;
                $n_height = $height / $aspect_x;

            }else{
                $n_height = $rheight;
                $n_width = $width / $aspect_y;
            }
        }

        $newimage = imagecreatetruecolor($n_width, $n_height);
        // resizing the picture
        imageCopyResized($newimage, $im, 0, 0, 0, 0, $n_width, $n_height, $width, $height);
        // writing to file the thumbnail
        if(file_exists($thfilename)){chmod($thfilename, 0777);}
        Imagejpeg($newimage, $thfilename, $quality);
        imagedestroy($newimage);
        imagedestroy($im);
    }
}
?>
于 2012-05-07T02:46:25.727 回答