Heim  >  Artikel  >  Java  >  Lösen Sie das Problem, dass der transparente Hintergrund von Java-komprimierten Bildern schwarz wird

Lösen Sie das Problem, dass der transparente Hintergrund von Java-komprimierten Bildern schwarz wird

高洛峰
高洛峰Original
2017-01-20 15:19:172725Durchsuche

public class Picture {  
        // TODO Auto-generated constructor stub  
     public static void resizePNG(String fromFile, String toFile, int outputWidth, int outputHeight,boolean proportion) {
              try {  
               File f2 = new File(fromFile);  

                  BufferedImage bi2 = ImageIO.read(f2);  
               int newWidth;
              int newHeight;
           // 判断是否是等比缩放
           if (proportion == true) {
            // 为等比缩放计算输出的图片宽度及高度
            double rate1 = ((double) bi2.getWidth(null)) / (double) outputWidth + 0.1;
            double rate2 = ((double) bi2.getHeight(null)) / (double) outputHeight + 0.1;
            // 根据缩放比率大的进行缩放控制
            double rate = rate1 < rate2 ? rate1 : rate2;
            newWidth = (int) (((double) bi2.getWidth(null)) / rate);
            newHeight = (int) (((double) bi2.getHeight(null)) / rate);
           } else {
            newWidth = outputWidth; // 输出的图片宽度
            newHeight = outputHeight; // 输出的图片高度
           }
                  BufferedImage to = new BufferedImage(newWidth, newHeight,  

                          BufferedImage.TYPE_INT_RGB);  

                  Graphics2D g2d = to.createGraphics();  

                  to = g2d.getDeviceConfiguration().createCompatibleImage(newWidth,newHeight,  

                          Transparency.TRANSLUCENT);  

                  g2d.dispose();  

                  g2d = to.createGraphics();  

                  Image from = bi2.getScaledInstance(newWidth, newHeight, bi2.SCALE_AREA_AVERAGING);  
                  g2d.drawImage(from, 0, 0, null);
                  g2d.dispose();  

                  ImageIO.write(to, "png", new File(toFile));  

              } catch (IOException e) {  

                  e.printStackTrace();  

              }  

          }  

          public static void main(String[] args) throws IOException {  

              System.out.println("Start");  

              resizePNG("C:\\Documents and Settings\\Administrator\\桌面\\8d9e9c82d158ccbf8b31059319d8bc3eb035414e.jpg", "C:\\Documents and Settings\\Administrator\\桌面\\ell.png",200, 100,true);  

              System.out.println("OK");  

          } 
}

更多解决java压缩图片透明背景变黑色的问题相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn