k47.cz
mastodon twitter RSS
bandcamp explorer

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))
}

píše k47, ascii@k47.cz