Re: Change decimal color code on the fly
On Friday, November 16, 2012 11:05:12 AM UTC-5, Bob wrote:
Hi All,
While making a datafile of decimal color pixel
codes for a small image, I want to change
a particular String number that will go into the datafile
to a different String number.
I am doing this before it is added to the
ArrayList. It does not seem to work and I need
to know why. Below is my test to identify
the String number and looking for the "if"
statement to recognize it"
Here is a snip of my code:
....
mSet = redStr + greenStr + blueStr;
System.out.println(mSet);//this is successful
mSetx= "255255255";
if (mSet == mSetx) {
System.out.println("yes, recognized");
//mSet = ("113000000");
}
colorpxl.add(mSet);// ArrayList
mSet = "";
Thanks in advance for your response.
Bob
Hi Eric,
There might quite a few "oops"
as this is a work in progress.
Bob
import java.awt.Component;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.ArrayList;
import java.awt.event.*;
import java.awt.image.*;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.io.FileOutputStream;
public class BufferedImageSto extends Component {
ArrayList<String> colorpxl = new ArrayList<String>();
ArrayList<String> dimensions = new ArrayList<String>();
String alphaStr, redStr, greenStr, blueStr, wStr, hStr, mSet,mSetx;
public static void main(String[] foo) {
new BufferedImageSto();
}
public void printPixelARGB(int pixel) {
int alpha = (pixel >> 24) & 0xff;
alphaStr = Integer.toString(alpha);
int red = (pixel >> 16) & 0xff;
redStr= Integer.toString(red);
if (redStr.length() < 2) {
redStr = "0" + redStr;}
if (redStr.length() < 3) {
redStr = "0" + redStr;}
int green = (pixel >> 8) & 0xff;
greenStr= Integer.toString(green);
if (greenStr.length() < 2) {
greenStr = "0" + greenStr;}
if (greenStr.length() < 3) {
greenStr = "0" + greenStr;}
int blue = (pixel) & 0xff;
blueStr= Integer.toString(blue);
if (blueStr.length() < 2) {
blueStr = "0" + blueStr;}
if (blueStr.length() < 3) {
blueStr = "0" + blueStr;}
mSet = redStr + greenStr + blueStr;
mSetx= "121000000";
if (mSet.equals( mSetx)) {
mSet = "";
mSet= Integer.toString (255255255);
System.out.println("revision "+ mSet);
}
//System.out.println(mSet);
colorpxl.add(mSet);
mSet = "";
}
private void marchThroughImage(BufferedImage image) {
int w = image.getWidth();
String wStr= Integer.toString(w);
int h = image.getHeight();
String hStr = Integer.toString(h);
dimensions.add(wStr);
dimensions.add(hStr);
System.out.println("width, height: " + w + ", " + h);
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
// System.out.println("x,y: " + j + ", " + i);
int pixel = image.getRGB(i, j);
printPixelARGB(pixel);
System.out.println("");
}
}
String respName = "ColorPixlData.txt";
System.out.println("File Saved as "+ respName);
System.out.println(respName);
try {
FileOutputStream fout = new FileOutputStream(respName);
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(dimensions);
out.writeObject(colorpxl);
out.flush();
out.close();
repaint();
}
catch (IOException e) {e.printStackTrace();
}
}
public BufferedImageSto() {
try {
// get the BufferedImage, using the ImageIO class
BufferedImage image = ImageIO.read(this.getClass().getResource("MH0x.png"));
marchThroughImage(image);
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}