Pixelgrabber and Vectors, changes not happening.
Hi All,
I am trying to use pixelgrabber, use vectors and storing the results.
The program below is my program. However the "if " condition is not
recognized during a run at "private String RestateClrLine (String
mSt) {" ....
and thus the changes are not reflected in the output file saved.
Simply put, I am trying to change the color of the "000000" to any
other color, say "ff0000" and it is not happening.
TIA
bH
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
public class applicPxlgrabMTstoBytes {
public static void main(String[] args) {
JFrame frame = new ImageProcessingFrame();
frame.show();
}
}
class ImageProcessingFrame
extends JFrame
implements ActionListener {
public ImageProcessingFrame() {
setTitle("PxlgrabMTstoBytes");
int frameX = 600;
int frameY = 800;
setSize(frameX, frameY);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = getContentPane();
panel = new ImageProcessingPanel();
contentPane.add(panel, "Center");
JMenu fileMenu = new JMenu("File");
openItem = new JMenuItem("Open");
openItem.addActionListener(this);
fileMenu.add(openItem);
exitItem = new JMenuItem("Exit");
exitItem.addActionListener(this);
fileMenu.add(exitItem);
JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
setJMenuBar(menuBar);
}
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
if (source == openItem) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("images"));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
String name = f.getName().toLowerCase();
return name.endsWith(".gif")
|| name.endsWith(".jpg")
|| name.endsWith(".jpeg")
|| name.endsWith(".png") // added this on 17 June 2003
|| f.isDirectory();
}
public String getDescription() {
return "Image files";
}
});
int r = chooser.showOpenDialog(this);
if (r == JFileChooser.APPROVE_OPTION) {
String name = chooser.getSelectedFile().getAbsolutePath();
panel.loadImage(name);
}
}
else if (source == exitItem) {
System.exit(0);
}
}
private ImageProcessingPanel panel;
private JMenuItem openItem;
private JMenuItem exitItem;
//private RestateClrLine mSt;
}
class ImageProcessingPanel
extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}
public void loadImage(String name) {
String sourceCodeString;
int iwidth;
int iheight;
int scansize;
int[] pixels;
Vector vectorColorData = new Vector();
Vector vectorDimensions = new Vector();
Image loadedImage = Toolkit.getDefaultToolkit().getImage(name);
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(loadedImage, 0);
try {
tracker.waitForID(0);
image = new BufferedImage(600, 800, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
g2.drawImage(loadedImage, 0, 0, null);
}
catch (InterruptedException e) {
}
try {
iwidth = loadedImage.getWidth(null);
vectorDimensions.addElement(Integer.toString(iwidth));
iheight = loadedImage.getHeight(null);
vectorDimensions.addElement(Integer.toString(iheight));
System.out.println("the width is " + iwidth);
System.out.println("the height is " + iheight);
scansize = iwidth * iheight;
pixels = new int[scansize];
PixelGrabber myPixelGrabber = new PixelGrabber(image, 0, 0,
iwidth,
iheight, pixels, 0, iwidth);
myPixelGrabber.grabPixels();
String mSet;
String s;
String si;
String mest;
int cr;
int cg;
int cb;
int hcb;
for (int i = 0; i < scansize; i++) {
mSet = "";
s = Integer.toString(i) + ". = Red Hex " +
Integer.toString( ( (int[]) pixels)[i] >> 16 & 0xff, 16);
si = "";
//cr = (((int[])pix)[i] >> 16 & 0xff); //, 16);
si = Integer.toString( ( (int[]) pixels)[i] >> 16 & 0xff, 16);
if (si.length() < 2) { // add an extra "0" in front of the
single
si = "0" + si;
}
mSet = mSet + si;
s = Integer.toString(i) + ". = Green Hex " +
Integer.toString( ( (int[]) pixels)[i] >> 8 & 0xff, 16);
si = "";
//cg = (((int[])pix)[i] >> 8 & 0xff); //, 16);
si = Integer.toString( ( (int[]) pixels)[i] >> 8 & 0xff, 16);
if (si.length() < 2) {
si = "0" + si;
}
mSet = mSet + si;
s = Integer.toString(i) + ". = Blue Hex " +
Integer.toString( ( (int[]) pixels)[i] & 0xff, 16);
si = "";
//cb = (((int[])pix)[i] & 0xff); //, 16);
si = Integer.toString( ( (int[]) pixels)[i] & 0xff, 16);
if (si.length() < 2) {
si = "0" + si;
}
mSet = mSet + si;
RestateClrLine(mSet);
vectorColorData.addElement(mSet);
}
System.out.println(
"Will be finsihed storing color bytes into a file after
image appears ");
}
catch (InterruptedException ie) {
System.out.println("Error Gathering Pixels");
}
try {
FileOutputStream fout = new
FileOutputStream("ColorPixlData.txt");
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(vectorDimensions);
out.writeObject(vectorColorData);
out.flush();
out.close();
repaint();
}
catch (IOException e) {
System.out.println("error with write to file");
}
repaint();
}
private void filter(BufferedImageOp op) {
BufferedImage filteredImage
= new BufferedImage(image.getWidth(), image.getHeight(),
image.getType());
op.filter(image, filteredImage);
image = filteredImage;
repaint();
}
private BufferedImage image;
// look at a mStr value
private String RestateClrLine (String mSt) {
String res ="";
System.out.println(mSt );
if (mSt == "000000"){
res = "ff0000";
System.out.println("Y");
}
else {
res = mSt;
System.out.println("N");
}
return res;
}
}
// end of program applicPxlgrabMTstoBytes