package com.swingsane.business.image.transform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.swingsane.business.image.ImageBinarize;
import com.swingsane.gui.panel.BinarizeTransformSettingsPanel;
import com.swingsane.gui.panel.ITransformSettingsPanel;
import com.swingsane.preferences.IPreferredDefaults;
/**
* @author Roland Quast (roland@formreturn.com)
*
*/
public class BinarizeTransform implements IImageTransform {
private int luminanceThreshold;
private File sourceImageFile;
private File outputImageFile;
private static final ImageTransformType imageTransformType = ImageTransformType.BINARIZE;
@Override
public void configure(IPreferredDefaults preferredDefaultsImpl) throws Exception {
luminanceThreshold = preferredDefaultsImpl.getDefaultLuminanceThreshold();
}
public final int getLuminanceThreshold() {
return luminanceThreshold;
}
@Override
public final File getOutputImageFile() {
return outputImageFile;
}
@Override
public final File getSourceImageFile() {
return sourceImageFile;
}
@Override
public final ITransformSettingsPanel getTransformSettingsPanel() {
BinarizeTransformSettingsPanel transformSettingsPanel = new BinarizeTransformSettingsPanel();
transformSettingsPanel.setTransform(this);
return transformSettingsPanel;
}
public final void setLuminanceThreshold(int luminanceThreshold) {
this.luminanceThreshold = luminanceThreshold;
}
@Override
public final void setOutputImageFile(File outputImageFile) {
this.outputImageFile = outputImageFile;
}
@Override
public final void setSourceImageFile(File sourceImageFile) {
this.sourceImageFile = sourceImageFile;
}
@Override
public final String toString() {
return imageTransformType.toString();
}
@Override
public final void transform() throws IOException {
BufferedImage bufferedImage = ImageIO.read(sourceImageFile);
ImageIO.write(ImageBinarize.binarizeImage(bufferedImage, luminanceThreshold, false), "PNG",
outputImageFile);
}
}