我有一个简单的PHP脚本,可以让用户在服务器上上传图像。我正在帮助我们在HTMl页面中以缩略图的形式显示这些图像,然后让用户点击这些缩略图,然后原始图片显示在新页面中。
我可以直接使用HTML吗?或者我需要一些javascript或PHP变种的组合吗?
我知道在stackoverflow上有很多关于这个问题的问题,我已经尝试过了,但是我所追求的并不是什么。
我最喜欢在“飞行”上创建缩略图,而不是我个人在用户上传图像时必须创建每个缩略图。
基本上我应该用什么语言来做这个?如果可能的话,我也可以有一些源代码吗?
感谢
答案 0 :(得分:0)
每次请求缩略图都是一个非常糟糕的想法 - 它需要很多的处理能力,这可以通过在第一次创建时保持它们来轻松保存。我建议将缩略图创建放在处理文件上传的php脚本中,以便同时将图像及其缩略图保存到磁盘。您也可以将缩略图保留在内存中,或者等到第一次请求创建它时,但无论哪种方式,每次请求时都无法重新生成缩略图。
通过简单地设置宽度和/或高度属性,可以使用html来更改图像的大小:
<img src='foo.jpg' alt='foo' width='500' height='300'/>
但是,如果您不确定用户以后是否想要查看完整尺寸的图像,那么这是一个坏主意。原因是缩略图的文件大小比完整图像小:如果客户端只想查看缩略图,那么您不想浪费带宽(=您的钱和客户的时间)向他们发送完整的图像。 / p>
至于你的界面,你不需要javascript来完成它,只需要html。但是,您需要一个服务器端脚本来创建html页面链接到的缩略图。
答案 1 :(得分:0)
那里有很多php缩略图脚本。
您使用重写器仍然显示原始路径,但服务器是php缩略图版本。或者您必须将网址更改为:
<img src="thumb.php?file=path/to/picture.jpg&size=128" />
就是这两个。最好配置为使用缓存的文件夹。我在工作时使用第一个脚本的修改版本。
答案 2 :(得分:0)
这是一个可以构建app的PHP脚本,只适用于jpg图像。
它将扫描一个目录,将图像标准化为一个合适的尺寸,并在飞行中制作一个拇指,然后在下一次刷新时,它不需要重新处理图像,因为它已经存在于拇指目录中。希望它有所帮助...
脚本放置
Root>
thisscript.php
/images/
someimage.jpg
someimage2.jpg
thisscript.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);
}
}
?>