填写一个变后的宽度,这个程序按照原比例生成一个变后的图片
代码见下面
工具名字:
$ mkthumb
$ gifsicle
如果没有需要安装:
gifsicle-1.37
mkthumb-2.0
附加LibJpg,libpng等等其他包,google上应该可以搜到,109服务器安装了
以下是命令行范例,详细的可以参考该工具的帮助手册:
GIF文件的放缩:
#直接按照大小放缩
gifsicle --resize 300x1000 < 原文件路径 > 目标文件路径
#按照比例放缩
gifsicle --scale 2x2 < 原文件路径 > 目标文件路径
JPG文件放缩:
mkthumb -f 宽 -o -s .thumb 文件路径
参考网址:
http://loreal.sina.com.cn/su
代码范例:
MakeThumb((char *)infile.c_str(),(char *)outfile.c_str(),atoi(scalex.c_str()),atoi(scaley.c_str()));
int MakeThumb(char * filepath,char * outfilepath,int width,int height){
char buff[1000];
//判断是JPG文件
if(filepath[strlen(filepath)-1]==103 || filepath[strlen(filepath)-1]==71){
sprintf(buff,"mkthumb -f %d -o -s .thumb %s",width,filepath);//jpg
system(buff);
string filewhole;
filewhole=filepath;
string path;
string filename;
int length;
int i;
length=strlen(filepath);
for(i=length;i>0;i--){
if(filepath[i-1]=='.') break;
}
char * buff1;
buff1=(char *)malloc(1000);
strncpy (buff1, filepath, i);
path=buff1;
filename=filewhole.substr(i,length-i);
filewhole="";
filewhole+=path;
filewhole+="thumb.";
filewhole+=filename;
sprintf(buff1,"mv %s %s",filewhole.c_str(),outfilepath);
system(buff1);
}
//判断是gif文件
if(filepath[strlen(filepath)-1]==102 || filepath[strlen(filepath)-1]==70){
sprintf(buff,"gifsicle --resize-width %d < %s > %s",width,filepath,outfilepath);
system(buff);
}
return 1;
}