java 图片灰度化

来源:互联网 发布:美工云网站 编辑:程序博客网 时间:2024/04/30 16:00
/** *  ━━━━━━神兽出没━━━━━━  *   ┏┓   ┏┓  *  ┏┛┻━━━┛┻┓  *     ┃       ┃ *   ┃   ━   ┃  *     ┃ ┳┛ ┗┳    ┃  *  ┃       ┃  *  ┃   ┻   ┃  *  ┃       ┃  *  ┗━┓   ┏━┛Code is far away from bug with the animal protecting  *    ┃   ┃    神兽保佑,代码无bug  *    ┃   ┃  *    ┃   ┗━━━┓  *    ┃       ┣┓  *    ┃       ┏┛  *    ┗┓┓┏━┳┓┏┛  *     ┃┫┫ ┃┫┫  *     ┗┻┛ ┗┻┛  *  * ━━━━━━感觉萌萌哒━━━━━━  */package gt.controller.Images;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;/** * 类名称:ImageDemo2.java * 类描述: * 作    者:why * 时    间:2017年3月17日 */public class ImageDemo2 {/** * 加权法灰度化(效果较好) * 图片灰化(参考:http://www.codeceo.com/article/java-image-gray.html) *  * @param bufferedImage 待处理图片 * @return * @throws Exception */public static BufferedImage grayImage(BufferedImage bufferedImage) throws Exception {int width = bufferedImage.getWidth();int height = bufferedImage.getHeight();BufferedImage grayBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);for (int x = 0; x < width; x++) {for (int y = 0; y < height; y++) {// 计算灰度值final int color = bufferedImage.getRGB(x, y);final int r = (color >> 16) & 0xff;final int g = (color >> 8) & 0xff;final int b = color & 0xff;int gray = (int) (0.3 * r + 0.59 * g + 0.11 * b);//int gray = (int) (0.21 * r + 0.71 * g + 0.07 * b);int newPixel = colorToRGB(255, gray, gray, gray);grayBufferedImage.setRGB(x, y, newPixel);}}return grayBufferedImage;}/** * 颜色分量转换为RGB值 *  * @param alpha * @param red * @param green * @param blue * @return */private static int colorToRGB(int alpha, int red, int green, int blue) {int newPixel = 0;newPixel += alpha;newPixel = newPixel << 8;newPixel += red;newPixel = newPixel << 8;newPixel += green;newPixel = newPixel << 8;newPixel += blue;return newPixel;}public static void main(String[] args) throws Exception {File file = new File("D:\\ocrpic\\sjh.png");BufferedImage image = ImageIO.read(file);File newFile = new File("D:\\ocrpic\\sjh1.png");ImageIO.write(grayImage(image), "png", newFile);}}

处理前:

处理后:

5 0
原创粉丝点击