Jump to content

LeafaR

Members
  • Posts

    1
  • Joined

  • Last visited

    Never
  • Feedback

    0%

About LeafaR

Profile Information

  • Gender
    Not Telling

LeafaR's Achievements

Newbie

Newbie (1/16)

0

Reputation

  1. I made the JSP one ;) <%@ page import="java.awt.*" %> <%@ page import="java.awt.image.*" %> <%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="javax.imageio.*" %> <%! public int readInt(RandomAccessFile ra) throws IOException { int b4 = (int) ra.read(); int b3 = (int) ra.read(); int b2 = (int) ra.read(); int b1 = (int) ra.read(); return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; } public int readShort(RandomAccessFile ra) throws IOException { int b2 = (int) ra.read(); int b1 = (int) ra.read(); return ((b1 << 8) | b2); } %> <% File file = new File("Crest_268619650.bmp"); //File file = new File("Crest_268607245.bmp"); RandomAccessFile ra = new RandomAccessFile(file, "r"); byte[] content = new byte[4]; ra.read(content, 0, 4); String ddsSTR = new String(content); if (ddsSTR.intern() != "DDS ") { out.print("Error, NO DDS"); return; } readInt(ra); //int size = readInt(ra); readInt(ra); //int flags = readInt(ra); int height = readInt(ra) - 4; int width = readInt(ra); readShort(ra); //int extra = readShort(ra); ra.seek(84); int dxt1 = ra.read(content, 0, 4); String dxt1STR = new String(content); if (dxt1STR.intern() != "DXT1") { out.print("Error, NO DXT1"); return; } ra.seek(128); response.setContentType("image/png"); BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int y = -1; y < (height / 4); y++) { for (int x = 0; x < (width / 4); x++) { int color0_16 = readShort(ra); int color1_16 = readShort(ra); int r0 = (color0_16 >> 11) << 3; int g0 = ((color0_16 >> 5) & 63) << 2; int b0 = (color0_16 & 31) << 3; int r1 = (color1_16 >> 11) << 3; int g1 = ((color1_16 >> 5) & 63) << 2; int b1 = (color1_16 & 31) << 3; int color0_32 = new Color(r0, g0, b0).getRGB(); int color1_32 = new Color(r1, g1, b1).getRGB(); int color2_32 = new Color((r0 / 2) + (r1 / 2), (g0 / 2) + (g1 / 2), (b0 / 2) + (b1 / 2)).getRGB(); int black = new Color(0, 0, 0).getRGB(); int data = readInt(ra); for (int yy = 0; yy < 4; yy++) { for (int xx = 0; xx < 4; xx++) { int bb = data & 3; data = data >> 2; int color = 0; switch(bb) { case 0: color = color0_32; break; case 1: color = color1_32; break; case 2: color = color2_32; break; default: color = black; break; } int locX = x * 4 + xx; int locY = y * 4 + yy; buffer.setRGB(Math.abs(locX), Math.abs(locY), color); } } } } OutputStream os = response.getOutputStream(); ImageIO.write(buffer, "png", os); %>
×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..