Bitmaps in Java2D
The Java2D backend supports loading bitmap images and converting them to pictures, and converting pictures to bitmaps.
Loading Bitmaps
Loading bitmap images from disk and converting them to pictures works as described in the section on bitmaps. Specifically, bitmaps can be loaded as instances of BufferedImage
from a File
or a Path
. The implementation uses ImageIO
, and hence supports all the bitmap formats that ImageIO
supports. The example below shows how this works.
import doodle.syntax.all.*
import doodle.java2d.{*, given}
import java.io.File
import java.nio.file.Paths
File("/path/to/bitmap.png").loadBitmap
Paths.get("/path/to/bitmap.png").loadBitmap
Converting Bitmaps to Pictures
A BufferedImage
can also be converted to a Picture
using the toPicture
method. Instances of Base64 can also be converted to a Picture
in the same way.
Converting Pictures to Bitmaps
A Picture
can be converted to a bitmap either as a BufferedImage
or as Base64 data.
Call the bufferedImage
method to convert a Picture
to a BufferedImage
.
import cats.effect.unsafe.implicits.global
import doodle.syntax.all.*
import doodle.java2d.{*, given}
val bitmap = Picture.circle(200).bufferedImage()
The following variants of bufferedImage
are available:
bufferedImage()
, shown above, use a defaultFrame
;bufferedImage(frame)
allows you to specify aFrame
; andbufferedImageToIO()
andbufferedImageToIO(frame)
work likebufferedImage
but return anIO[BufferedImage]
instead of aBufferedImage
.
Use the base64
method to convert a Picture
to Base64 encoded data. You will need to specify a Format as a type parameter, which determines the bitmap format that is used. The example below shows encoding a Picture
as a PNG.
import cats.effect.unsafe.implicits.global
import doodle.core.format.Png
import doodle.syntax.all.*
import doodle.java2d.{*, given}
val base64 = Picture.circle(200).base64[Png]()
The following method variants are available:
base64[Format](frame)
to specify aFrame
to use instead of the default; andbase64ToIO[Format]()
andbase64[Format](frame)
to return aIO[Base64[Format]]
.