java图片变成黑白代码_转:Java对图片的处理---缩放图像、图像切割、图像类型转换、彩色转为黑白...

1 importjava.io.*;2 importjava.awt.*;3 importjava.awt.image.*;4 importjava.awt.Graphics;5 importjava.awt.color.ColorSpace;6 importjavax.imageio.ImageIO;7 8 publicclassChangeImageSize9 {10 /***//**11 * 缩放图像12 *@paramsrcImageFile 源图像文件地址13 *@paramresult       缩放后的图像地址14 *@paramscale        缩放比例15 *@paramflag         缩放选择:true 放大; false 缩小;16 */17 publicstaticvoidscale(String srcImageFile, String result,intscale,booleanflag)18 {19 try20 {21 BufferedImage src=ImageIO.read(newFile(srcImageFile));//读入文件22 intwidth=src.getWidth();//得到源图宽23 intheight=src.getHeight();//得到源图长24 if(flag)25 {26 //放大27 width=width*scale;28 height=height*scale;29 }30 else31 {32 //缩小33 width=width/scale;34 height=height/scale;35 }36 Image image=src.getScaledInstance(width, height, Image.SCALE_DEFAULT);37 BufferedImage tag=newBufferedImage(width, height, BufferedImage.TYPE_INT_RGB);38 Graphics g=tag.getGraphics();39 g.drawImage(image,0,0,null);//绘制缩小后的图40 g.dispose();41 ImageIO.write(tag,"JPEG",newFile(result));//输出到文件流42 }43 catch(IOException e)44 {45 e.printStackTrace();46 }47 }48 49 /***//**50 * 图像切割51 *@paramsrcImageFile 源图像地址52 *@paramdescDir      切片目标文件夹53 *@paramdestWidth    目标切片宽度54 *@paramdestHeight   目标切片高度55 */56 publicstaticvoidcut(String srcImageFile, String descDir,intdestWidth,intdestHeight)57 {58 try59 {60 Image img;61 ImageFilter cropFilter;62 //读取源图像63 BufferedImage bi=ImageIO.read(newFile(srcImageFile));64 intsrcWidth=bi.getHeight();//源图宽度65 intsrcHeight=bi.getWidth();//源图高度66 if(srcWidth>destWidth&&srcHeight>destHeight)67 {68 Image image=bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);69 destWidth=200;//切片宽度70 destHeight=150;//切片高度71 intcols=0;//切片横向数量72 introws=0;//切片纵向数量73 //计算切片的横向和纵向数量74 if(srcWidth%destWidth==0)75 {76 cols=srcWidth/destWidth;77 }78 else79 {80 cols=(int) Math.floor(srcWidth/destWidth)+1;81 }82 if(srcHeight%destHeight==0)83 {84 rows=srcHeight/destHeight;85 }86 else87 {88 rows=(int) Math.floor(srcHeight/destHeight)+1;89 }90 //循环建立切片91 //改进的想法:是否可用多线程加快切割速度92 for(inti=0; iJPG GIF->PNG PNG->JPG PNG->GIF(X)119 */120 publicstaticvoidconvert(String source, String result)121 {122 try123 {124 File f=newFile(source);125 f.canRead();126 f.canWrite();127 BufferedImage src=ImageIO.read(f);128 ImageIO.write(src,"JPG",newFile(result));129 }130 catch(Exception e)131 {132 //TODO Auto-generated catch block133 e.printStackTrace();134 }135 }136 137 /***//**138 * 彩色转为黑白139 *@paramsource140 *@paramresult141 */142 publicstaticvoidgray(String source, String result)143 {144 try145 {146 BufferedImage src=ImageIO.read(newFile(source));147 ColorSpace cs=ColorSpace.getInstance(ColorSpace.CS_GRAY);148 ColorConvertOp op=newColorConvertOp(cs,null);149 src=op.filter(src,null);150 ImageIO.write(src,"JPEG",newFile(result));151 }152 catch(IOException e)153 {154 e.printStackTrace();155 }156 }157 158 /***//**159 *@paramargs160 */161 publicstaticvoidmain(String[] args)162 {163 scale("c:\\test\\456.jpg","C:\\test\\image1.jpg",2,false);164 cut("c:\\test\\456.jpg","C:\\test\\image2.jpg",64,64);165 gray("c:\\test\\456.jpg","C:\\test\\image4.jpg");166 }167 168 }169

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值