pike写的,对图片进行操作的一些脚本,着急用的时候可以拿来用用
//该程序测试转化.jpg的图片,进行图片的缩放
int main(int num ,array(string) args)
{
if(num==2)
{
string image=args[1];
write(image+"/n");
mixed err=catch{
write("Image convert test!/n");
string t_str=Image.load_file(image);
object o;
if(search(image,".jpg.png")>0||search(image,".gif.png")>0||search(image,".bmp.png")>0)
{
write("是转过的图像,不再做处理|"+image+"/n");
return 1;
}
if(search(image,".jpg")>0)
o=Image.JPEG.decode(t_str);
else if(search(image,".png")>0)
{
o=Image.PNG.decode(t_str);
}
else
o=Image.JPEG.decode(t_str);
int x=o->xsize();
int y=o->ysize();
write("x:"+x+"y:"+y+"/n");
if(x>110&&o!=0)
{
float xx=(float)x;
float xx_r=110.0/xx;
write("scale rate"+xx_r+"/n");
o=o->scale(xx_r);
string ret="";
if(search(image,".jpg")>0)
ret=Image.JPEG.encode(o);
else if(search(image,".png")>0)
ret=Image.PNG.encode(o);
else
ret=Image.JPEG.encode(o);
Stdio.write_file(image,ret);
}
};
if(err)
{
write("内部错误/n");
}
}
else
{
write("参数错误");
}
return 1;
}
下面的程序是把别的格式图片都转换成png格式的
format_decode.pike
int main(int num ,array(string) args)
{
if(num==2)
{
string image=args[1];
//write(image+"/n");
//mixed err=catch{
write("************************Image decode test begin!****************/n");
string t_str=Image.load_file(image);
object o;
//if(search(image,".jpg.png")>0||search(image,".gif.png")>0||search(image,".bmp.png")>0||search(image,".png")>0||search(imag
e,".PNG")>0)
if(search(image,".png")>0||search(image,".PNG")>0)
{
write("是转过的图像,不再做处理|"+image+"/n");
return 1;
}
if(search(image,".jpg")>0||search(image,".JPG")>0)
{
write("是.jpg .JPG |"+image+"/n");
o=Image.JPEG.decode(t_str);
}
else if(search(image,".gif")>0||search(image,".GIF")>0)
{
write("是.gif .GIF |"+image+"/n");
o=Image.GIF.decode(t_str);
}
else if(search(image,".bmp")>0||search(image,".BMP")>0)
{
write("是.bmp .BMP |"+image+"/n");
o=Image.BMP.decode(t_str);
}
if(o!=0)
{
write("另存为....../n");
string ret=Image.PNG.encode(o);
string decode_img = image[0..sizeof(image)-5];
Stdio.write_file(decode_img+".png",ret);
//这里需要把原来的jpg或者其他格式的原图删除
string cmd="rm "+image;
Process.system(cmd);
}
write("************************Image decode test end!****************/n");
}
return 1;
}
脚本:
#! /bin/sh
export PATH=$PATH:/usr/local/bin:/usr/bin:/usr/local/sbin
#备份一下原始图片信息
/bin/cp -fr /home/xxx/data/* /home/xxx/data-bak
dir=.
curfiles=$(find /home/xxx/data/)
#转换data目录下的图片为png格式
echo $curfiles
for file in $curfiles
do
if [ -f $file ]
then
/usr/local/bin/pike /home/xxx/bin/format_decode.pike $file
echo $file
fi
done