Sha256: 62dff838ca1f7aac253de80451a0200d9477320a01e6e6f1d3e0743831703a66
Contents?: true
Size: 1.55 KB
Versions: 6
Compression:
Stored size: 1.55 KB
Contents
package org.sunflow.image.readers; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.sunflow.image.Bitmap; import org.sunflow.image.BitmapReader; import org.sunflow.image.Color; import org.sunflow.image.formats.BitmapRGBA8; public class PNGBitmapReader implements BitmapReader { public Bitmap load(String filename, boolean isLinear) throws IOException, BitmapFormatException { // regular image, load using Java api BufferedImage bi = ImageIO.read(new File(filename)); int width = bi.getWidth(); int height = bi.getHeight(); byte[] pixels = new byte[4 * width * height]; for (int y = 0, index = 0; y < height; y++) { for (int x = 0; x < width; x++, index += 4) { int argb = bi.getRGB(x, height - 1 - y); pixels[index + 0] = (byte) (argb >> 16); pixels[index + 1] = (byte) (argb >> 8); pixels[index + 2] = (byte) argb; pixels[index + 3] = (byte) (argb >> 24); } } if (!isLinear) { for (int index = 0; index < pixels.length; index += 4) { pixels[index + 0] = Color.NATIVE_SPACE.rgbToLinear(pixels[index + 0]); pixels[index + 1] = Color.NATIVE_SPACE.rgbToLinear(pixels[index + 1]); pixels[index + 2] = Color.NATIVE_SPACE.rgbToLinear(pixels[index + 2]); } } return new BitmapRGBA8(width, height, pixels); } }
Version data entries
6 entries across 6 versions & 1 rubygems