From 1aab91eaaa6496c03c77b0ccd0fe568bfae35cea Mon Sep 17 00:00:00 2001 From: Davide Della Casa Date: Thu, 30 Aug 2012 10:39:52 +0100 Subject: [PATCH] Added a simple example --- src/Hqx2xUpscalerExample.java | 52 ++++++++++++++++++++++++++++++++++ src/sampleImage_original.png | Bin 0 -> 5100 bytes 2 files changed, 52 insertions(+) create mode 100644 src/Hqx2xUpscalerExample.java create mode 100644 src/sampleImage_original.png diff --git a/src/Hqx2xUpscalerExample.java b/src/Hqx2xUpscalerExample.java new file mode 100644 index 0000000..f95a177 --- /dev/null +++ b/src/Hqx2xUpscalerExample.java @@ -0,0 +1,52 @@ + +import java.awt.image.*; +import java.io.*; +import javax.imageio.*; +import hqx.*; + +class Hqx2xUpscalerExample { + public static void main(String[] args) { + + // Load an image + BufferedImage bi = null; + try { + bi = ImageIO.read(new File("sampleImage_original.png")); + } + catch (java.io.IOException e) { + System.err.println("Error loading image file: " + e); + } + if (bi != null) { + // Convert image to ARGB if on another format + if (bi.getType() != BufferedImage.TYPE_INT_ARGB && bi.getType() != BufferedImage.TYPE_INT_ARGB_PRE) { + final BufferedImage temp = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_ARGB); + temp.getGraphics().drawImage(bi, 0, 0, null); + bi = temp; + } + // Obtain pixel data for source image + final int[] data = ((DataBufferInt) bi.getRaster().getDataBuffer()).getData(); + + // Initialize lookup tables + RgbYuv.hqxInit(); + + // Create the destination image, twice as large for 2x algorithm + final BufferedImage biDest2 = new BufferedImage(bi.getWidth() * 2, bi.getHeight() * 2, BufferedImage.TYPE_INT_ARGB); + // Obtain pixel data for destination image + final int[] dataDest2 = ((DataBufferInt) biDest2.getRaster().getDataBuffer()).getData(); + // Resize it + Hqx_2x.hq2x_32_rb(data, dataDest2, bi.getWidth(), bi.getHeight()); + // Save our result + try { + ImageIO.write(biDest2, "PNG", new File("sampleImage_hqx2.png")); + } + catch(java.io.IOException e) { + System.err.println("Error loading image file: " + e); + } + + // More calls to hq[234]x_32_rb() methods + // .... + + // Release the lookup table + RgbYuv.hqxDeinit(); + } + } +} diff --git a/src/sampleImage_original.png b/src/sampleImage_original.png new file mode 100644 index 0000000000000000000000000000000000000000..e8deab7dd2cfcbac03644ec5404c1e64639ebacc GIT binary patch literal 5100 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 r2Kl}Azip)B_UFV7=l-_4z$F);7$x