Java – converts a negative image to a positive number
I have scanned my computer for old movies I want to write a small program to convert negative images into positive ones
I know there are several image editor applications that I can use to implement this conversion, but I'm studying how to manipulate pixels to convert themselves through a small application
Can someone give me a head to start? If possible, the sample code will also be appreciated
Solution
I just wrote a working example The following input image img png.
The output will be a new image, convert img png like
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class Convert
{
public static void main(String[] args)
{
invertImage("img.png");
}
public static void invertImage(String imageName) {
BufferedImage inputFile = null;
try {
inputFile = ImageIO.read(new File(imageName));
} catch (IOException e) {
e.printStackTrace();
}
for (int x = 0; x < inputFile.getWidth(); x++) {
for (int y = 0; y < inputFile.getHeight(); y++) {
int rgba = inputFile.getRGB(x,y);
Color col = new Color(rgba,true);
col = new Color(255 - col.getRed(),255 - col.getGreen(),255 - col.getBlue());
inputFile.setRGB(x,y,col.getRGB());
}
}
try {
File outputFile = new File("invert-"+imageName);
ImageIO.write(inputFile,"png",outputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
If you want to create a monochrome image, you can change the calculation of col to the following:
int MONO_THRESHOLD = 368;
if (col.getRed() + col.getGreen() + col.getBlue() > MONO_THRESHOLD)
col = new Color(255,255,255);
else
col = new Color(0,0);
The above will give you the following image
You can adjust mono_ Threshold for a more pleasant output Increasing the number darkens the pixels and vice versa
