# HG changeset patch # User David Barts # Date 1595085120 25200 # Node ID 1f824742e1fa335d9c7e74522651340844cc50bc # Parent 70b4d11ebbb98f2948b64cdce5d851170ffbab60 Improve scaling quality. diff -r 70b4d11ebbb9 -r 1f824742e1fa src/name/blackcap/imageprep/RotateDialog.kt --- a/src/name/blackcap/imageprep/RotateDialog.kt Fri Jul 17 23:25:33 2020 -0700 +++ b/src/name/blackcap/imageprep/RotateDialog.kt Sat Jul 18 08:12:00 2020 -0700 @@ -6,7 +6,6 @@ import java.awt.Dimension import java.awt.Graphics import java.awt.Graphics2D -import java.awt.RenderingHints import java.awt.Toolkit import java.awt.event.ActionListener import java.awt.image.BufferedImage @@ -130,13 +129,11 @@ } else { val nWidth = (imageIn.width * ratio).toInt() val nHeight = (imageIn.height * ratio).toInt() - val imageOut = BufferedImage(nWidth, nHeight, BufferedImage.TYPE_INT_RGB) - val graphics = imageOut.createGraphics().apply { - setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC) - setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) - setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) + val imageOut = BufferedImage(nWidth, nHeight, imageIn.type) + imageOut.createGraphics().run { + drawImage(imageIn.getScaledInstance(nWidth, nHeight, BufferedImage.SCALE_SMOOTH), 0, 0, null) + dispose() } - graphics.drawImage(imageIn, 0, 0, nWidth, nHeight, null) Pair(imageOut, null) } } catch (e: IOException) {