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

.



Relevant Pages

  • Getting Error in Login() method in FtpConnection Class
    ... private static int BUFFER_SIZE = 512; ... private static Encoding ASCII = Encoding.ASCII; ... private string server = "localhost"; ... public void Login() ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Problem with FTP
    ... > private static Encoding ASCII = Encoding.ASCII; ... > private string message = null; ... > private int port = 21; ... > public void Login() ...
    (microsoft.public.pocketpc.developer)
  • Versioning question
    ... bool SaveActivity(Activity a, string username, string password); ... ActivityTypeID, DateTime FollowUpDate, int TimeSpent, bool isOpen, ... private DateTime _FollowUpDate; ...
    (microsoft.public.dotnet.framework.remoting)
  • Re: automatic code generation for properties
    ... Age) for each of the private members of my class. ... public property string name Name ... protected property int height=10 Height ... XML documentation applied to the short form would either be applied to ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: help to write a correct "if" statement for pixel color
    ... int frameX = 400; ... public void actionPerformed{ ... String name = f.getName.toLowerCase; ... String mSet; ...
    (comp.lang.java.help)