我使用以下方法將圖像轉換爲jpg。我的解決方案的問題是,它會降低質量。如何將grails中的png/gif/jpg轉換爲jpg以保持圖像中的高質量?
什麼是保持圖像質量,同時減小文件大小的好方法?
def convertToJpg(currentImage) {
try {
InputStream inStreamCrop = new ByteArrayInputStream(currentImage)
BufferedImage bufferedImage = ImageIO.read(inStreamCrop)
// create a blank, RGB, same width and height, and a white background
BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(),
bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null);
ByteArrayOutputStream baos=new ByteArrayOutputStream()
// write to jpeg file
ImageIO.write(newBufferedImage, "jpg", baos);
baos.flush()
def image = baos.toByteArray()
baos.close()
return image
} catch (IOException e) {
e.printStackTrace();
}
}
退房http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/ –
與JPEG獲得的壓縮可能會有所不同很大程度上取決於圖像內容。一旦你減少了顏色以產生GIF或8位PNG,你從JPEG中獲得的壓縮效果就不會那麼好。 –