將白色背景圖片變透明(轉自csdn)
[java:showcolumns] view plaincopy
- package com.picture;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.util.regex.Pattern;
- import javax.imageio.ImageIO;
- import javax.swing.ImageIcon;
- import javax.swing.JOptionPane;
- public class Picture {
- public static void convert(String path) {
- // TODO Auto-generated constructor stub
- try {
- BufferedImage image = ImageIO.read(new File(path));
- ImageIcon imageIcon = new ImageIcon(image);
- BufferedImage bufferedImage = new BufferedImage(
- imageIcon.getIconWidth(), imageIcon.getIconHeight(),
- BufferedImage.TYPE_4BYTE_ABGR);
- Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
- g2D.drawImage(imageIcon.getImage(), 0, 0,
- imageIcon.getImageObserver());
- int alpha = 0;
- for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage
- .getHeight(); j1++) {
- for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage
- .getWidth(); j2++) {
- int rgb = bufferedImage.getRGB(j2, j1);
- if (colorInRange(rgb))
- alpha = 0;
- else
- alpha = 255;
- rgb = (alpha << 24) | (rgb & 0x00ffffff);
- bufferedImage.setRGB(j2, j1, rgb);
- }
- }
- g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
- // 生成圖片為PNG
- String outFile = path.substring(0, path.lastIndexOf("."));
- ImageIO.write(bufferedImage, "png", new File(outFile + ".png"));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public static boolean colorInRange(int color) {
- int red = (color & 0xff0000) >> 16;
- int green = (color & 0x00ff00) >> 8;
- int blue = (color & 0x0000ff);
- if (red >= color_range && green >= color_range && blue >= color_range)
- return true;
- return false;
- }
- public static int color_range = 210;
- public static Pattern pattern = Pattern.compile("[0-9]*");
- public static boolean isNo(String str) {
- return pattern.matcher(str).matches();
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String path = JOptionPane.showInputDialog(null, "請輸入圖片目錄");
- if (path == null || !new File(path).isDirectory()) {
- JOptionPane.showMessageDialog(null, "輸入目錄有誤!");
- return;
- }
- String color = JOptionPane.showInputDialog(null, "請輸入色差范圍0~255(建議10~50)");
- if (isNo(color)) {
- color_range = 255 - Integer.parseInt(color);
- File file = new File(path);
- String[] files = file.list();
- for (int i = 0; i < files.length; i++) {
- String ext = files[i].substring(files[i].lastIndexOf(".") + 1);
- if (ext.equals("jpg")) {
- convert(path + "http://" + files[i]);
- }
- }
- JOptionPane.showMessageDialog(null, "轉換完成!");
- } else {
- JOptionPane.showMessageDialog(null, "輸入的數字有誤!");
- }
- }
- }