From ba5dd02852d62fc8cd2e6ec1cd748ebeb1f93af2 Mon Sep 17 00:00:00 2001 From: srowen Date: Wed, 1 Aug 2012 23:48:37 +0000 Subject: [PATCH] Speedup for black/white image rendering git-svn-id: https://zxing.googlecode.com/svn/trunk@2365 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../com/google/zxing/client/j2se/MatrixToImageConfig.java | 7 +++++++ .../com/google/zxing/client/j2se/MatrixToImageWriter.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/javase/src/com/google/zxing/client/j2se/MatrixToImageConfig.java b/javase/src/com/google/zxing/client/j2se/MatrixToImageConfig.java index 1054763ca..a959cff09 100644 --- a/javase/src/com/google/zxing/client/j2se/MatrixToImageConfig.java +++ b/javase/src/com/google/zxing/client/j2se/MatrixToImageConfig.java @@ -16,6 +16,8 @@ package com.google.zxing.client.j2se; +import java.awt.image.BufferedImage; + /** * Encapsulates custom configuration used in methods of {@link MatrixToImageWriter}. */ @@ -52,4 +54,9 @@ public final class MatrixToImageConfig { return offColor; } + int getBufferedImageColorModel() { + // Use faster BINARY if colors match default + return onColor == BLACK && offColor == WHITE ? BufferedImage.TYPE_BYTE_BINARY : BufferedImage.TYPE_INT_RGB; + } + } \ No newline at end of file diff --git a/javase/src/com/google/zxing/client/j2se/MatrixToImageWriter.java b/javase/src/com/google/zxing/client/j2se/MatrixToImageWriter.java index c4d3724e4..e4c11b472 100644 --- a/javase/src/com/google/zxing/client/j2se/MatrixToImageWriter.java +++ b/javase/src/com/google/zxing/client/j2se/MatrixToImageWriter.java @@ -51,7 +51,7 @@ public final class MatrixToImageWriter { public static BufferedImage toBufferedImage(BitMatrix matrix, MatrixToImageConfig config) { int width = matrix.getWidth(); int height = matrix.getHeight(); - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + BufferedImage image = new BufferedImage(width, height, config.getBufferedImageColorModel()); int onColor = config.getPixelOnColor(); int offColor = config.getPixelOffColor(); for (int x = 0; x < width; x++) {