博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 对图片进行切割,灰度化,切割操作
阅读量:5361 次
发布时间:2019-06-15

本文共 2625 字,大约阅读时间需要 8 分钟。

有时候项目中会对图片进行操作,像切图啦,二值化啦,灰度啦。。

在验证码识别的时候很有用

现在将java对图片操作的部分方法写下来

 不管图片如何操作,关键是在new BufferImage 时候的 TYPE

BufferedImage.TYPE_BYTE_GRAY  是灰度化

BufferedImage.TYPE_BYTE_BINARY 是二值化

BufferedImage.TYPE_INT_ARGB ........

详细参数介绍如下:

 

(1) 将地址转换为BufferImage

public static BufferedImage console(String imgUrl) {        BufferedImage img = null;        try {            if (imgUrl.startsWith("http:")) {                img = ImageIO.read(new URL(imgUrl));            } else {                img = ImageIO.read(new File(imgUrl));            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }         return img;    }

 (2) 图片的灰度化:

public static void huiDuHua(BufferedImage img) {        int sWight = img.getWidth();        int sHight = img.getHeight();        BufferedImage newImage = new BufferedImage(sWight, sHight,                BufferedImage.TYPE_BYTE_GRAY);        for (int x = 0; x < sWight; x++) {            for (int y = 0; y < sHight; y++) {                int rgb= img.getRGB(x, y);                newImage.setRGB(x, y, rgb);            }        }         try {            ImageIO.write(newImage, "jpg", new File("aa.jpg"));        } catch (IOException e) {            e.printStackTrace();        }              }

(3) 图片二值化

public static void erZhiHua(BufferedImage img) {        int sWight = img.getWidth();        int sHight = img.getHeight();        BufferedImage newImage = new BufferedImage(sWight, sHight,                BufferedImage.TYPE_BYTE_BINARY);        for (int x = 0; x < sWight; x++) {            for (int y = 0; y < sHight; y++) {                int rgb= img.getRGB(x, y);                newImage.setRGB(x, y, rgb);            }        }         try {            ImageIO.write(newImage, "jpg", new File("bb.jpg"));        } catch (IOException e) {            e.printStackTrace();        }              }

(4)图片切割

public static BufferedImage cat(int x, int y, int wight, int hight,            BufferedImage img) {        int[] simgRgb = new int[wight * hight];        img.getRGB(x, y, wight, hight, simgRgb, 0, wight);        BufferedImage newImage = new BufferedImage(wight, hight,                BufferedImage.TYPE_INT_ARGB);        newImage.setRGB(0, 0, wight, hight, simgRgb, 0, wight);//         try {//                ImageIO.write(newImage, "PNG", new File("aa.png"));//            } catch (IOException e) {//                // TODO Auto-generated catch block//                e.printStackTrace();//            }          return newImage;    }

 

 

转载于:https://www.cnblogs.com/tomcattd/archive/2013/01/23/2873349.html

你可能感兴趣的文章
iOS 使用系统相册获取选取图片的名称
查看>>
软考复习中
查看>>
【JUC】JDK1.8源码分析之Semaphore(六)
查看>>
leetcode469:等价二叉树
查看>>
javaScript 实时获取系统时间
查看>>
ES6思维导图
查看>>
第四周作业
查看>>
20151121
查看>>
线段重叠 (思维好题)
查看>>
Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
查看>>
SBuild 0.1.5 发布,基于 Scala 的构建系统
查看>>
WordPress 3.5 RC3 发布
查看>>
DOM扩展札记
查看>>
python中的None
查看>>
Shiro权限框架使用总结
查看>>
Windows Azure 上传 VM
查看>>
SharePoint Framework 在web部件中使用第三方样式 - 将第三方样式打到包中
查看>>
阿里云OSS上传文件本地调试跨域问题解决
查看>>
python的安装和配置环境变量
查看>>
PHP -- 图像处理
查看>>