Labels
- Bandwidth monitoring (1)
- image decoder (1)
- Java (2)
- Koha jquery (1)
- Linux (1)
- MRTG (1)
- PCX (1)
- Request Tracker (1)
- REST API (1)
- Router (1)
Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts
Tuesday, April 10, 2012
RT ticket creator based on the current Apache HttpComponents library 4.1.3
This summary is not available. Please
click here to view the post.
Wednesday, March 21, 2012
PCX image decoder / convertor in JAVA
This is a simple decoder / converter to jpg / png in Java for PCX image format.
It supports the Monochrome & 24 bit color images in PCX format. I will add support
for other formats as & when I come across them.
===================================================
/**
* @author Koustubha Kale
* koustubha_kale@yahoo.com
* I have made liberal use of the code I have found on the net in this,
* although I did not find one that actually worked. Whereas this does. You can
use this
* in the same manner if you find it usefull.
*/
import com.sun.jimi.core.*;
import com.sun.jimi.core.raster.*;
import com.sun.jimi.core.JimiException;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.color.ICC_ColorSpace;
import java.awt.color.ICC_ProfileRGB;
import java.awt.event.*;
import java.awt.image.*;
import java.beans.PropertyVetoException;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.util.Arrays;
public class GetFormats {
public static void main(String args[]) {
//String readFormats[] = Jimi.getDecoderTypes();
//String writeFormats[] = Jimi.getEncoderTypes();
//System.out.println("Decoders: " + Arrays.asList(readFormats));
//System.out.println("Encoders: " + Arrays.asList(writeFormats));
try {
//Image im = Jimi.getImage("ims.pcx", Jimi.SYNCHRONOUS);
//System.out.println("Image Height="+im.getHeight()+", Image Width="+im.getWidth());
//System.out.println("Is err? "+im.isError());
//Jimi.putImage("image/jpg", im, "ims-1.jpg");
//System.out.println("Wrote Image.");
//loadImage("ASCPRIN.pcx");
loadImage("DR.pcx");
} catch (Exception e) {
System.out.println("Err :" + e);
e.printStackTrace();
}
}
public static void loadImage(java.lang.String imageFilename)
throws IOException, Exception {
// read the image head
byte[] head = new byte[128];
int bitPlane = 0, type = 0;
long fileLength = new File(imageFilename).length();
BufferedInputStream openFile =
new BufferedInputStream(new FileInputStream(imageFilename));
long readLen = openFile.read(head, 0, 128);
if ((head[3] & 0xff) == 1 && (head[65] & 0xff) == 1) {
type = 0;
bitPlane = 1;
} else if (head[3] == 1 && head[65] == 2) {
type = 1;
bitPlane = 2;
} else if (head[3] == 2 && head[65] == 1) {
type = 2;
bitPlane = 1;
} else if (head[3] == 1 && head[65] == 3) {
type = 3;
bitPlane = 3;
} else if (head[3] == 1 && head[65] == 4) {
type = 4;
bitPlane = 4;
} else if (head[3] == 4 && head[65] == 1) {
type = 5;
bitPlane = 1;
} else if (head[3] == 8 && head[65] == 1) {
type = 6;
bitPlane = 1;
} else if (head[3] == 8 && head[65] == 3) {
type = 7;
bitPlane = 3;
}
System.out.print("nPlanes=" + (head[65] & 0xff));
System.out.print("Image type =" + type);
int width =
((((int) head[9] & 0x0ff) << 8) | ((int) head[8] & 0xff))
- ((((int) head[5] & 0x0ff) << 8) | ((int) head[4] & 0xff))
+ 1;
int height =
((((int) head[11] & 0x0ff) << 8) | ((int) head[10] & 0xff))
- ((((int) head[7] & 0x0ff) << 8) | ((int) head[6] & 0xff))
+ 1;
System.out.print("; Width,height=" + width + "," + height);
int version = head[1];
System.out.println("; version=" + version);
int color = 0;
if (version == 2 || version > 3)
color = 1;
else
color = 0;
int bytesPerLine = //(int) head[67] & 0x0ff;
((((int) head[67] & 0x0ff) << 8) | ((int) head[66] & 0xff));
System.out.println("bytesPerLine=" + bytesPerLine);
if (type == 0) {
if ((bytesPerLine*8)>width)
width=bytesPerLine*8;
BufferedImage innerImage =
new BufferedImage(
width,
height,
BufferedImage.TYPE_BYTE_BINARY);
java.awt.image.WritableRaster raster = innerImage.getRaster();
int[] unComData = new int[width * height];
int inc = 0;
byte[] tempAry = new byte[1];
while ((readLen = openFile.read(tempAry)) != -1) {
if (((int) tempAry[0] & 0xff) < 192) {
//for (int j = 0; j < 8; j++)
unComData[inc] = (int) tempAry[0] & 0xff;
//inc += 8;
//System.out.println("Data value="+((int) tempAry[0] & 0xff));
inc++;
} else {
int count = ((int) tempAry[0]) & 0x3f;
readLen = openFile.read(tempAry);
//System.out.println("multiple Data value="+((int) tempAry[0] & 0xff));
//System.out.println("Count="+count);
for (int j = 0; j < count; j++)
unComData[inc + j] = (int) tempAry[0] & 0xff;
inc += count;
}
}
System.out.println(
"Palett?=" + (unComData[unComData.length - 770] & 0xff));
System.out.println("inc=" + inc);
System.out.println("unComData length=" +unComData.length);
int[] data2 = new int[width * height];
int k = 0;
for (int j = 0; j < inc; j++) {
int temp = unComData[j];
for (int i = 1; i < 255; i *= 2, k++) {
//System.out.println("i="+i);
if ((temp & 0x80) == 0x80)
data2[k] |= 0x01;
else
data2[k] = 0x00;
temp <<= 1;
}
}
System.out.println("data2 length=" + k);
try {
raster.setPixels(0, 0, width, height, data2);
innerImage =
new BufferedImage(
innerImage.getColorModel(),
raster,
false,
null);
/*JFrame frame=new JFrame();
JLabel l=new JLabel();
l.setIcon(new ImageIcon(innerImage));
frame.getContentPane().add(l);
frame.pack();
frame.show();
*/
Jimi.putImage("image/jpg", innerImage, "ASCPRIN.jpg");
Jimi.putImage("image/png", innerImage, "ASCPRIN.png");
ImageIO.write(innerImage, "jpg", new File("ASCPRIN11.jpg"));
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("set image error!");
e.printStackTrace();
}
}
if (type == 7) {
BufferedImage innerImage =
new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
java.awt.image.WritableRaster raster = innerImage.getRaster();
int[] unComData = new int[width * height * 3];
int inc = 0;
byte[] tempAry = new byte[1];
while ((readLen = openFile.read(tempAry)) != -1) {
if (((int) tempAry[0] & 0xff) < 192) {
unComData[inc] = (int) tempAry[0] & 0xff;
inc++;
} else {
int count = ((int) tempAry[0]) & 0x3f;
readLen = openFile.read(tempAry);
//System.out.println("Count="+count);
for (int j = 0; j < count; j++)
unComData[inc + j] = (int) tempAry[0] & 0xff;
inc += count;
}
}
int[] rAry = new int[bytesPerLine];
int[] gAry = new int[bytesPerLine];
int[] bAry = new int[bytesPerLine];
int len = unComData.length;
for (int i = 0; i < len; i += bytesPerLine * 3) {
for (int j = 0; j < bytesPerLine; j++) {
rAry[j] = unComData[i + j];
// System.out.println(i+bytesPerLine+j);
gAry[j] = unComData[i + bytesPerLine + j];
bAry[j] = unComData[i + 2 * bytesPerLine + j];
}
for (int j = 0; j < bytesPerLine; j++) {
//for (int k = 0; k < 3; k++) {
unComData[i + (j * 3)] = rAry[j];
unComData[i + (j * 3) + 1] = gAry[j];
unComData[i + (j * 3) + 2] = bAry[j];
//}
}
}
System.out.println("unComData length=" + unComData.length);
System.out.println("inc=" + inc);
try {
raster.setPixels(0, 0, width, height, unComData);
//ColorModel cm=new DirectColorModel(java.awt.color.ColorSpace.getInstance(java.awt.color.ColorSpace.CS_sRGB),false,false,Transparency.TRANSLUCENT,DataBuffer.TYPE_BYTE);
innerImage =
new BufferedImage(
innerImage.getColorModel(),
raster,
false,
null);
Jimi.putImage("image/jpg", innerImage, "joshi-2.jpg");
Jimi.putImage("image/png", innerImage, "joshi-2.png");
ImageIO.write(innerImage, "jpg", new File("joshi.jpg"));
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("set image error!");
e.printStackTrace();
}
}
//
openFile.close();
}
}
//end of file..
=========================================================
Enjoy..
Regards
kk
It supports the Monochrome & 24 bit color images in PCX format. I will add support
for other formats as & when I come across them.
===================================================
/**
* @author Koustubha Kale
* koustubha_kale@yahoo.com
* I have made liberal use of the code I have found on the net in this,
* although I did not find one that actually worked. Whereas this does. You can
use this
* in the same manner if you find it usefull.
*/
import com.sun.jimi.core.*;
import com.sun.jimi.core.raster.*;
import com.sun.jimi.core.JimiException;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.color.ICC_ColorSpace;
import java.awt.color.ICC_ProfileRGB;
import java.awt.event.*;
import java.awt.image.*;
import java.beans.PropertyVetoException;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.util.Arrays;
public class GetFormats {
public static void main(String args[]) {
//String readFormats[] = Jimi.getDecoderTypes();
//String writeFormats[] = Jimi.getEncoderTypes();
//System.out.println("Decoders: " + Arrays.asList(readFormats));
//System.out.println("Encoders: " + Arrays.asList(writeFormats));
try {
//Image im = Jimi.getImage("ims.pcx", Jimi.SYNCHRONOUS);
//System.out.println("Image Height="+im.getHeight()+", Image Width="+im.getWidth());
//System.out.println("Is err? "+im.isError());
//Jimi.putImage("image/jpg", im, "ims-1.jpg");
//System.out.println("Wrote Image.");
//loadImage("ASCPRIN.pcx");
loadImage("DR.pcx");
} catch (Exception e) {
System.out.println("Err :" + e);
e.printStackTrace();
}
}
public static void loadImage(java.lang.String imageFilename)
throws IOException, Exception {
// read the image head
byte[] head = new byte[128];
int bitPlane = 0, type = 0;
long fileLength = new File(imageFilename).length();
BufferedInputStream openFile =
new BufferedInputStream(new FileInputStream(imageFilename));
long readLen = openFile.read(head, 0, 128);
if ((head[3] & 0xff) == 1 && (head[65] & 0xff) == 1) {
type = 0;
bitPlane = 1;
} else if (head[3] == 1 && head[65] == 2) {
type = 1;
bitPlane = 2;
} else if (head[3] == 2 && head[65] == 1) {
type = 2;
bitPlane = 1;
} else if (head[3] == 1 && head[65] == 3) {
type = 3;
bitPlane = 3;
} else if (head[3] == 1 && head[65] == 4) {
type = 4;
bitPlane = 4;
} else if (head[3] == 4 && head[65] == 1) {
type = 5;
bitPlane = 1;
} else if (head[3] == 8 && head[65] == 1) {
type = 6;
bitPlane = 1;
} else if (head[3] == 8 && head[65] == 3) {
type = 7;
bitPlane = 3;
}
System.out.print("nPlanes=" + (head[65] & 0xff));
System.out.print("Image type =" + type);
int width =
((((int) head[9] & 0x0ff) << 8) | ((int) head[8] & 0xff))
- ((((int) head[5] & 0x0ff) << 8) | ((int) head[4] & 0xff))
+ 1;
int height =
((((int) head[11] & 0x0ff) << 8) | ((int) head[10] & 0xff))
- ((((int) head[7] & 0x0ff) << 8) | ((int) head[6] & 0xff))
+ 1;
System.out.print("; Width,height=" + width + "," + height);
int version = head[1];
System.out.println("; version=" + version);
int color = 0;
if (version == 2 || version > 3)
color = 1;
else
color = 0;
int bytesPerLine = //(int) head[67] & 0x0ff;
((((int) head[67] & 0x0ff) << 8) | ((int) head[66] & 0xff));
System.out.println("bytesPerLine=" + bytesPerLine);
if (type == 0) {
if ((bytesPerLine*8)>width)
width=bytesPerLine*8;
BufferedImage innerImage =
new BufferedImage(
width,
height,
BufferedImage.TYPE_BYTE_BINARY);
java.awt.image.WritableRaster raster = innerImage.getRaster();
int[] unComData = new int[width * height];
int inc = 0;
byte[] tempAry = new byte[1];
while ((readLen = openFile.read(tempAry)) != -1) {
if (((int) tempAry[0] & 0xff) < 192) {
//for (int j = 0; j < 8; j++)
unComData[inc] = (int) tempAry[0] & 0xff;
//inc += 8;
//System.out.println("Data value="+((int) tempAry[0] & 0xff));
inc++;
} else {
int count = ((int) tempAry[0]) & 0x3f;
readLen = openFile.read(tempAry);
//System.out.println("multiple Data value="+((int) tempAry[0] & 0xff));
//System.out.println("Count="+count);
for (int j = 0; j < count; j++)
unComData[inc + j] = (int) tempAry[0] & 0xff;
inc += count;
}
}
System.out.println(
"Palett?=" + (unComData[unComData.length - 770] & 0xff));
System.out.println("inc=" + inc);
System.out.println("unComData length=" +unComData.length);
int[] data2 = new int[width * height];
int k = 0;
for (int j = 0; j < inc; j++) {
int temp = unComData[j];
for (int i = 1; i < 255; i *= 2, k++) {
//System.out.println("i="+i);
if ((temp & 0x80) == 0x80)
data2[k] |= 0x01;
else
data2[k] = 0x00;
temp <<= 1;
}
}
System.out.println("data2 length=" + k);
try {
raster.setPixels(0, 0, width, height, data2);
innerImage =
new BufferedImage(
innerImage.getColorModel(),
raster,
false,
null);
/*JFrame frame=new JFrame();
JLabel l=new JLabel();
l.setIcon(new ImageIcon(innerImage));
frame.getContentPane().add(l);
frame.pack();
frame.show();
*/
Jimi.putImage("image/jpg", innerImage, "ASCPRIN.jpg");
Jimi.putImage("image/png", innerImage, "ASCPRIN.png");
ImageIO.write(innerImage, "jpg", new File("ASCPRIN11.jpg"));
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("set image error!");
e.printStackTrace();
}
}
if (type == 7) {
BufferedImage innerImage =
new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
java.awt.image.WritableRaster raster = innerImage.getRaster();
int[] unComData = new int[width * height * 3];
int inc = 0;
byte[] tempAry = new byte[1];
while ((readLen = openFile.read(tempAry)) != -1) {
if (((int) tempAry[0] & 0xff) < 192) {
unComData[inc] = (int) tempAry[0] & 0xff;
inc++;
} else {
int count = ((int) tempAry[0]) & 0x3f;
readLen = openFile.read(tempAry);
//System.out.println("Count="+count);
for (int j = 0; j < count; j++)
unComData[inc + j] = (int) tempAry[0] & 0xff;
inc += count;
}
}
int[] rAry = new int[bytesPerLine];
int[] gAry = new int[bytesPerLine];
int[] bAry = new int[bytesPerLine];
int len = unComData.length;
for (int i = 0; i < len; i += bytesPerLine * 3) {
for (int j = 0; j < bytesPerLine; j++) {
rAry[j] = unComData[i + j];
// System.out.println(i+bytesPerLine+j);
gAry[j] = unComData[i + bytesPerLine + j];
bAry[j] = unComData[i + 2 * bytesPerLine + j];
}
for (int j = 0; j < bytesPerLine; j++) {
//for (int k = 0; k < 3; k++) {
unComData[i + (j * 3)] = rAry[j];
unComData[i + (j * 3) + 1] = gAry[j];
unComData[i + (j * 3) + 2] = bAry[j];
//}
}
}
System.out.println("unComData length=" + unComData.length);
System.out.println("inc=" + inc);
try {
raster.setPixels(0, 0, width, height, unComData);
//ColorModel cm=new DirectColorModel(java.awt.color.ColorSpace.getInstance(java.awt.color.ColorSpace.CS_sRGB),false,false,Transparency.TRANSLUCENT,DataBuffer.TYPE_BYTE);
innerImage =
new BufferedImage(
innerImage.getColorModel(),
raster,
false,
null);
Jimi.putImage("image/jpg", innerImage, "joshi-2.jpg");
Jimi.putImage("image/png", innerImage, "joshi-2.png");
ImageIO.write(innerImage, "jpg", new File("joshi.jpg"));
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("set image error!");
e.printStackTrace();
}
}
//
openFile.close();
}
}
//end of file..
=========================================================
Enjoy..
Regards
kk
Subscribe to:
Posts (Atom)