Re: failing to compare vector images files correctly
On Oct 1, 10:07 am, bH <bherbs...@hotmail.com> wrote:
Hi All,
I have 3 images of "shape.gif" copied from the same primary
"shape.gif".
To date, I have converted each of the "shape.gif" into vectors, saved
the vectors
in datafiles. Each of the vector datafiles can be read to show each of
the images. If I
compare the vector datafiles, using the program below it says that
there is a
change. I do not believe that there is a actual change.
Further, I have tested the program by copying one vector file,
renaming it to be the
others. Obviously there is a error in the program, but I can't find
it.
Your help is appreciated.
bH
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class applicPxlBytesCompare3Imgs
extends JFrame {
String width;
String height;
String reportResults01= ""; // results first and second file
comparison
String reportResults02= ""; // results first and third file
comparison
String reportResults12 = ""; // results second and third file
comparison
String holdStr = "";
int w, h;
Vector vector0a = new Vector();
Vector vector0b = new Vector();
Vector vector1a = new Vector();
Vector vector1b = new Vector();
Vector vector2a = new Vector();
Vector vector2b = new Vector();
public static void main(String[] args) {
applicPxlBytesCompare3Imgs myExample = new
applicPxlBytesCompare3Imgs("Pixel Color Comparison");
}
public applicPxlBytesCompare3Imgs(String title) {
super(title);
setSize(100, 100);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
System.exit(0);
}
});
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
for (int i = 0; i<3; i++){
if(i==0) {
holdStr = "images/shape0.txt";
}
if(i==1) {
holdStr = "images/shape1.txt";
}
if(i==2) {
holdStr = "images/shape2.txt";
}
// read each of the files
// first vector in each file has the width and height.
// Second vector has the colors of each pixel.
System.out.println("Files Assigned, now reading files ");
try {
FileInputStream fin = new FileInputStream(holdStr);
ObjectInputStream in = new ObjectInputStream(fin);
if(i==0) {
vector0a = (Vector) in.readObject();//
vector0b = (Vector) in.readObject();
}
if(i==1) {
vector1a = (Vector) in.readObject();
vector1b = (Vector) in.readObject();
}
if(i==2) {
vector2a = (Vector) in.readObject();
vector2b = (Vector) in.readObject();
}
in.close();
}
catch (Exception e) {
System.out.println("error getting data");
}
}
System.out.println("Now Comparing Vectors ");
width = (String)vector0a.elementAt(0); //shape0 width
w = Integer.parseInt(width);
height = (String) vector0a.elementAt(1);//shape height
h = Integer.parseInt(height);
System.out.println("Working");
int index = 0;
reportResults01 = " all equal";
reportResults02 = " all equal";
reportResults12 = " all equal";
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
if(vector0b.elementAt(index) !=
vector1b.elementAt(index)){
reportResults01 = "an instance of different color
vectors or locations in
First and Second Files ";
System.out.println( "01 " + reportResults01 + " " +
index );
}
if(vector0b.elementAt(index) !=
vector2b.elementAt(index)){
reportResults02 = "an instance of different color
vectors or locations in
First and Third Files ";
System.out.println( "02 " + reportResults02 + " "+
index );
}
if(vector1b.elementAt(index) !=
vector2b.elementAt(index)){
reportResults12 = "an instance of different color
vectors or locations in
Second and Third Files ";
System.out.println( "12 " + reportResults12 + " "+
index );
}
++index;
}
}
}
}
Hi All,
I have revised the program to use ".equals" and the "if statements" to
do the string
comparison. This replaces the "!=" in my first program above.
This revision was suggested by others in an earlier Q of mine at:
http://groups.google.com/group/comp.lang.java.help/browse_thread/thread/4b15248
efb756742/05ca28eec12c2437?hl=en#05ca28eec12c2437
With this revision I get the expected results.
Thanks to all.
bH
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class applicPxlBytesCompare3Imgs
extends JFrame {
String width;
String height;
String reportResults01= ""; // results first and second file
comparison
String reportResults02= ""; // results first and third file
comparison
String reportResults12 = ""; // results second and third file
comparison
String holdStr = "";
int w, h;
Vector vector0a = new Vector();
Vector vector0b = new Vector();
Vector vector1a = new Vector();
Vector vector1b = new Vector();
Vector vector2a = new Vector();
Vector vector2b = new Vector();
public static void main(String[] args) {
applicPxlBytesCompare3Imgs myExample = new
applicPxlBytesCompare3Imgs("Pixel Color Comparison");
}
public applicPxlBytesCompare3Imgs(String title) {
super(title);
setSize(100, 100);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
System.exit(0);
}
});
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
for (int i = 0; i<3; i++){
if(i==0) {
holdStr = "images/shape0.txt";
}
if(i==1) {
holdStr = "images/shape1.txt";
}
if(i==2) {
holdStr = "images/shape2.txt";
}
// read each of the files
// first vector in each file has the width and height.
// Second vector has the colors of each pixel.
System.out.println("Files Assigned, now reading files ");
try {
FileInputStream fin = new FileInputStream(holdStr);
ObjectInputStream in = new ObjectInputStream(fin);
if(i==0) {
vector0a = (Vector) in.readObject();//
vector0b = (Vector) in.readObject();
}
if(i==1) {
vector1a = (Vector) in.readObject();
vector1b = (Vector) in.readObject();
}
if(i==2) {
vector2a = (Vector) in.readObject();
vector2b = (Vector) in.readObject();
}
in.close();
}
catch (Exception e) {
System.out.println("error getting data");
}
}
System.out.println("Now Comparing Vectors ");
width = (String)vector0a.elementAt(0); //shape0 width
w = Integer.parseInt(width);
height = (String) vector0a.elementAt(1);//shape0 height
h = Integer.parseInt(height);
System.out.println("Working");
int index = 0;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
reportResults01 = "01 unequal at "+ (index);
if(vector0b.elementAt(index).equals
(vector1b.elementAt(index))){
reportResults01 = "vector equal in First and Second
Files ";
System.out.println( "01 " + reportResults01 + " " +
index);
}
reportResults02 = "02 unequal at ";
if(vector0b.elementAt(index).equals
(vector2b.elementAt(index))){
reportResults02 = "vector equal in First and Third
Files ";
System.out.println( "02 " + reportResults02 + " "+
index);
}
reportResults12 = "12 unequal at ";
if(vector1b.elementAt(index).equals
(vector2b.elementAt(index))){
reportResults12 = "vector equal in Second and Third
Files ";
System.out.println( "12 " + reportResults12 + " "+
index);
}
++index;
}
}
}
}