我自己是用gd得
如果要用gd,在windows下面只要在php.ini里面打开extension=php_gd2.dll,把前面得分号去了就可以了
在linux下面就编译得时候带gd来编译
查找一下“缩略图"就可以找到一些生成缩略图得代码了
如果要用gd,在windows下面只要在php.ini里面打开extension=php_gd2.dll,把前面得分号去了就可以了
在linux下面就编译得时候带gd来编译
查找一下“缩略图"就可以找到一些生成缩略图得代码了
extension=php_gd2.dll 在PHP.ini里我已经去掉了分号,phpinfo.php 还没有GD的信息,不知是为什么?缩略图只能调用GD来实现吗,各位有什么好方法?
最好放在系统目录下面。
---------------------------------------------------------------------
<?$FILENAME=time()."_s";// 生成图片的宽度
$RESIZEWIDTH=200;// 生成图片的高度
$RESIZEHEIGHT=200;
function ResizeImage($im,$maxwidth,$maxheight,$name){
$width = imagesx($im);
$height = imagesy($im);
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
if($maxwidth && $width > $maxwidth){
$widthratio = $maxwidth/$width;
$RESIZEWIDTH=true;
}
if($maxheight && $height > $maxheight){
$heightratio = $maxheight/$height;
$RESIZEHEIGHT=true;
}
if($RESIZEWIDTH && $RESIZEHEIGHT){
if($widthratio < $heightratio){
$ratio = $widthratio;
}else{
$ratio = $heightratio;
}
}elseif($RESIZEWIDTH){
$ratio = $widthratio;
}elseif($RESIZEHEIGHT){
$ratio = $heightratio;
}
$newwidth = $width * $ratio;
$newheight = $height * $ratio;
if(function_exists("imagecopyresampled")){
$newim = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}else{
$newim = imagecreate($newwidth, $newheight);
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}
ImageJpeg ($newim,$name . ".jpg");
ImageDestroy ($newim);
}else{
ImageJpeg ($im,$name . ".jpg");
}
}if($_FILES['image']['size']){
if($_FILES['image']['type'] == "image/pjpeg"){
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/x-png"){
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/gif"){
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
}
if($im){
if(file_exists("$FILENAME.jpg")){
unlink("$FILENAME.jpg");
}
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
ImageDestroy ($im);
}
}?><img src="<? echo($FILENAME.".jpg?reload=".rand(0,999999)); ?>"><br><br><form enctype="multipart/form-data" method="post">
<br>
<input type="file" name="image" size="50" value="浏览"><p>
<input type="submit" value="上传图片">
</form> </body>
</html>
---------------------------------------------------------------------
GD设置问题已解决,可基本问题还没解决。
怎样用其它方法实现文件缩略?最近琢磨PHPBB的代码,发现GIF文件不能显示缩略,请高人指点。
$newimgpath="c/img_small.pic";//生成的缩略图路径 $srcSize= getImageSize($imgpath);
$srcRatio=$srcSize[0]/$srcSize[1];
if(100*$srcRatio>120){
$w=120;$h=0; //要求按原图比例缩扩后,宽不能大于120像素,
}else{
$w=0;$h=87; //要求按原图比例缩扩后高不能大于87像素
}
if($srcSize[2]==2)
@makeimage($imgpath,$newimgpath,$w,$h);FUNCTION makeimage($srcFile,$dstFile,$dstW,$dstH) {
global $wangming,$wangming2,$news,$tugao,$tukuan,$zdimg;
$quality=80; //设置清淅度80%
$srcFile=str_replace($wangming,$news,$srcFile);
$srcFile=str_replace($wangming2,$news,$srcFile);
if(!file_exists($srcFile) || $srcFile==""){
return;
}
if(file_exists($srcFile2)){
$srcFile=$srcFile2;
}
$srcSize= getImageSize($srcFile);
$srcW=$srcSize[0];
$srcH=$srcSize[1];
$srcRatio=$srcSize[0]/$srcSize[1];
if($dstW==0){
$dstW=ceil($dstH*$srcRatio);
}
if($dstH==0){
$dstH=ceil($dstW/$srcRatio);
}
$tugao=$dstH;
$tukuan=$dstW;
$ni=imageCreateTrueColor($dstW,$dstH);
switch ($srcSize[2]) {
case 1: $im = imageCreateFromGif($srcFile);break;
case 2: $im = imageCreateFromJpeg($srcFile);break;
case 3: $im = imageCreateFromPng($srcFile);break;
default: return false; break;
}
ImageCopyResampled($ni,$im,0,0,0,0,$dstW,$dstH,$srcW,$srcH);
switch ($srcSize[2]) {
case 1:
case 2: imageJpeg($ni,$dstFile,$quality); break;
case 3: imagePng($ni,$dstFile); break;
}
}
但是你如果算法不错的话,可以自己编写类似gd库的编码规则..
我开始也用GD2,结果发现不管怎么搞都不好看,还是imagemagick爽!
不知各位大侠还有什么好软件吗???