Java/Scala - práce s obrázky
— k47 (CC by)
Tohle je hlavně pro mě, abych to měl po ruce až budu příště v Javě pracovat s obrázky.
import javax.imageio.ImageIO import java.io.File import java.awt.image.BufferedImage import java.awt.{ RenderingHints, AlphaComposite } // resize image def resize(img: BufferedImage, w: Int, h: Int): BufferedImage = { val resized = new BufferedImage(w, h, img.getType) val g = resized.createGraphics() //g.setComposite(AlphaComposite.Src) g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR) g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) g.drawImage(img, 0, 0, w, h, null) g.dispose() resized } // crop image image.getSubimage(x, y, width, height) // convert image to grayscale // http://www.codebeach.com/2008/03/convert-color-image-to-gray-scale-image.html def toGrayscale(img: BufferedImage) = { val gray = new BufferedImage(img.getWidth, img.getHeight, BufferedImage.TYPE_BYTE_GRAY) val g = gray.getGraphics() g.drawImage(img, 0, 0, null) g.dispose() gray } // image data as grayscale values def grayscaleData(img: BufferedImage) = { val (w, h) = (img.getWidth, img.getHeight) img.getData.getSamples(0, 0, w, h, 0, new Array[Int](w * h)) }