问:有一个文件resized.php 和一个图片pic.jpg
它们在同一个目录下,pic.jpg的宽是300px;高300px
我要在resized.php写一程序重新调pic.jpg的大小,
并且生成调整大小后的的图片pic2.jpg
请问应该用那个函数,怎样写?
(越简单越好,请不要复制网上那几个调整大小的函数上来,谢谢)
答:
PHP有这样的函数吗,我不太清楚,如果有,是不是要加载一系列的DLL呢,我建议不要用PHP的函数来做这个。
我建议使用“ImageMagick”工具来做这些事情,中文网站:http://www.imagemagick.com.cn/
ImageMagick可以做许许多多的功能:它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。ImageMagick支持至少90种图片格式:。
图片转换的核心文件是CONVERT.EXE,利用这个文件,使用PHP的SYSTEM调用,可以完成各种图片文件的变换。我网站的程序里面把用户上传图片宽度大于800的调整为800的语句如下:
代码
$imginfo
=
getimagesize
(
$tmp_name
);
if
(
$imginfo
&&
$imginfo
[
0
]
>
0
){
//
压缩宽度超过800的图片为800,10K以上的JPG图片用30%进行压缩
if
(
$imginfo
[
0
]
>
800
){
echo
"
你上传的图片幅面为
$imginfo
[0] x
$imginfo
[1] ,将被压缩到800个象素宽。
"
;
system
(
'
"C:\Program Files\ImageMagick-6.0.7-Q16\convert.exe"
'
.
"
-sample 800 -quality 80
$tmp_name
$tmp_name
"
);
}
elseif
(
$imginfo
[
2
]
==
2
&&
$src_size
>
10240
)
system
(
'
"C:\Program Files\ImageMagick-6.0.7-Q16\convert.exe"
'
.
"
-quality 30
$tmp_name
$tmp_name
"
);
//
压缩BMP、TIFF文件为JPG格式
if
(
$imginfo
[
2
]
==
6
||
$imginfo
[
2
]
==
7
||
$imginfo
[
2
]
==
8
){
system
(
'
"C:\Program Files\ImageMagick-6.0.7-Q16\convert.exe"
'
.
"
-quality 80
$tmp_name
$tmp_name
.jpg
"
);
rename
(
"
$tmp_name
.jpg
"
,
$tmp_name
);
$ext
=
'
jpg
'
;
}
}
本人已经用过了,挺好用的