タイトル通りに、
既存のbufferedImageより、指定width、height、dpiのbufferedImageを取得したいですが、
何かいい方法がありますでしょうか?
DPIはどう設定しますか?
サイズとdpiを別々に変更するではなく、一回だけリサイズできないでしょうか?
java
1 public static BufferedImage resizeImage(BufferedImage srcImage, int resizeWidth, 2 int resizeHeight,int resizeDpi) { 3 4 int w = resizeWidth; 5 int h = resizeHeight; 6 7 int imageWidth = srcImage.getWidth(); 8 int imageHeight = srcImage.getHeight(); 9 10 if ((imageWidth > imageHeight) && (resizeWidth < resizeHeight)) { 11 w = resizeHeight; 12 h = resizeWidth; 13 } 14 15 double sx = (double) w / imageWidth; 16 double sy = (double) h / imageHeight; 17 18 AffineTransform trans = AffineTransform.getScaleInstance(sx, sy); 19 if (sx == sy) { 20 21 }else if (sx > sy) { 22 w = (int) (sy * imageWidth); 23 trans = AffineTransform.getScaleInstance(sy, sy); 24 }else{ 25 h = (int) (sx * imageHeight); 26 trans = AffineTransform.getScaleInstance(sx, sx); 27 } 28 29 BufferedImage dstImage = new BufferedImage(w, h, srcImage.getType()); 30 31 Graphics2D g2 = (Graphics2D)dstImage.createGraphics(); 32 g2.drawImage(srcImage, trans, null); 33 g2.dispose(); 34 35 return dstImage; 36 37 }
回答1件
あなたの回答
tips
プレビュー