JAVA功能代碼《8》—-Java建立圖片的縮圖

來源:互聯網
上載者:User

8.Java建立圖片的縮圖

public void createThumbnail(String filename, int thumbWidth,<br />int thumbHeight, int quality, String outFilename)<br />throws InterruptedException, FileNotFoundException, IOException {<br />// load image from filename<br />Image image = Toolkit.getDefaultToolkit().getImage(filename);<br />MediaTracker mediaTracker = new MediaTracker(new Container());<br />mediaTracker.addImage(image, 0);<br />mediaTracker.waitForID(0);<br />// use this to test for errors at this point:<br />// System.out.println(mediaTracker.isErrorAny());<br />// determine thumbnail size from WIDTH and HEIGHT<br />double thumbRatio = (double) thumbWidth / (double) thumbHeight;<br />int imageWidth = image.getWidth(null);<br />int imageHeight = image.getHeight(null);<br />double imageRatio = (double) imageWidth / (double) imageHeight;<br />if (thumbRatio < imageRatio) {<br />thumbHeight = (int) (thumbWidth / imageRatio);<br />} else {<br />thumbWidth = (int) (thumbHeight * imageRatio);<br />}</p><p>// draw original image to thumbnail image object and<br />// scale it to the new size on-the-fly<br />BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight,<br />BufferedImage.TYPE_INT_RGB);<br />Graphics2D graphics2D = thumbImage.createGraphics();<br />graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,<br />RenderingHints.VALUE_INTERPOLATION_BILINEAR);<br />graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);</p><p>// save thumbnail image to outFilename<br />BufferedOutputStream out = new BufferedOutputStream(<br />new FileOutputStream(outFilename));<br />JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);<br />JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);<br />quality = Math.max(0, Math.min(quality, 100));<br />param.setQuality((float) quality / 100.0f, false);<br />encoder.setJPEGEncodeParam(param);<br />encoder.encode(thumbImage);<br />out.close();<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.