I just finished up with a simple project we had for Computer Science 1302 and I saw that there was extra credit for it and I was wondering if any of you could help me out with it. The program itself simply takes a BMP image and makes it black and white and creates the new output file within the same folder as the original image (Which has to be in your projects folder). The extra credit that I simply need help with is :
[b]show the outputted file in a ScrollPane (hint: requires ImageIO class to show a BMP in an ImageIcon).[/b]
Here is the code:
[quote]
import java.io.*;
import javax.swing.*;
public class Bitmapper
{
public static void main(String[] args) throws IOException
{
//ask user for a file (BMP) to open
JFileChooser chooser = new JFileChooser();
int status = chooser.showOpenDialog(null);
if (status != JFileChooser.APPROVE_OPTION)
{
JOptionPane.showMessageDialog(null, "No file chosen.");
}
else
{
File file = chooser.getSelectedFile();
String outfile = chooser.getSelectedFile().getParentFile().getAbsolutePath();
String inName = file.getName(); // input file name to string
outfile += "\\" + inName.substring(0, inName.length() -4) + "_gray.bmp"; // generate output file name
// Handling binary (not text) data, so use FileInputStream
FileInputStream in = new FileInputStream(file);
FileOutputStream out = new FileOutputStream(outfile);
int B, G, R = 0;
int counter = 0;
while((B=in.read())!=-1) {
if (++counter>54) // skip past Bitmap headers
{
G = in.read(); //read green and blue bytes
R = in.read();
int gray = (B + G + R)/3;
B = gray;
G = gray;
R = gray;
out.write(R);
out.write(G);
//B = Math.min(B+100, 255); // Lighten image
}
out.write(B);
}
in.close();
out.close();
}
}
}
[/quote]
-
Edited by Emacs: 10/25/2013 2:14:21 AMIf you need to grey scale the image, you need to average all of the colour channel values in each pixel, and set each of the channels equal to that average value. If it's strictly Black and White, then you need to set the colour channel values to 00 or FF based on the average being over or under some value. I'm not sure all of the libraries you're using (images and interface) are standard, so I can't help with that.