Skip to content
Snippets Groups Projects
Commit fcaa3742 authored by Chiamh's avatar Chiamh
Browse files

avoid double file extensions

parent 73d5bf1a
Branches
No related tags found
No related merge requests found
...@@ -42,7 +42,7 @@ public class Example1 { ...@@ -42,7 +42,7 @@ public class Example1 {
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG); BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.JPG); BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.JPG);
BitmapEncoder.saveJPGWithQuality(chart, "./Sample_Chart_With_Quality.jpg", 0.95f); BitmapEncoder.saveJPGWithQuality(chart, "./Sample_Chart_With_Quality", BitmapFormat.JPG, 0.95f);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.BMP); BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.BMP);
BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.GIF); BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.GIF);
......
...@@ -53,6 +53,23 @@ public final class BitmapEncoder { ...@@ -53,6 +53,23 @@ public final class BitmapEncoder {
public enum BitmapFormat { public enum BitmapFormat {
PNG, JPG, BMP, GIF; PNG, JPG, BMP, GIF;
} }
/**
* Only adds the extension of the BitmapFormat to the filename if the filename doesn't already have it.
*
* @param fileName
* @param bitmapFormat
* @return filename (if extension already exists), otherwise;: filename + "." + extension
*/
private static String addFileExtension(String fileName, BitmapFormat bitmapFormat) {
String fileNameWithFileExtension = fileName;
final String newFileExtension = "." + bitmapFormat.toString().toLowerCase();
if (fileName.length() <= newFileExtension.length() ||
!fileName.substring(fileName.length()-newFileExtension.length(), fileName.length()).equalsIgnoreCase(newFileExtension)) {
fileNameWithFileExtension = fileName + newFileExtension;
}
return fileNameWithFileExtension;
}
/** /**
* Save a Chart as an image file * Save a Chart as an image file
...@@ -66,7 +83,7 @@ public final class BitmapEncoder { ...@@ -66,7 +83,7 @@ public final class BitmapEncoder {
BufferedImage bufferedImage = getBufferedImage(chart); BufferedImage bufferedImage = getBufferedImage(chart);
OutputStream out = new FileOutputStream(fileName + "." + bitmapFormat.toString().toLowerCase()); OutputStream out = new FileOutputStream(addFileExtension(fileName, bitmapFormat));
ImageIO.write(bufferedImage, bitmapFormat.toString().toLowerCase(), out); ImageIO.write(bufferedImage, bitmapFormat.toString().toLowerCase(), out);
out.close(); out.close();
} }
...@@ -108,7 +125,7 @@ public final class BitmapEncoder { ...@@ -108,7 +125,7 @@ public final class BitmapEncoder {
setDPI(metadata, DPI); setDPI(metadata, DPI);
File file = new File(fileName + "." + bitmapFormat.toString().toLowerCase()); File file = new File(addFileExtension(fileName, bitmapFormat));
FileImageOutputStream output = new FileImageOutputStream(file); FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output); writer.setOutput(output);
IIOImage image = new IIOImage(bufferedImage, null, metadata); IIOImage image = new IIOImage(bufferedImage, null, metadata);
...@@ -150,11 +167,12 @@ public final class BitmapEncoder { ...@@ -150,11 +167,12 @@ public final class BitmapEncoder {
* *
* @param chart * @param chart
* @param fileName * @param fileName
* @param bitmapFormat
* @param quality - a float between 0 and 1 (1 = maximum quality) * @param quality - a float between 0 and 1 (1 = maximum quality)
* @throws FileNotFoundException * @throws FileNotFoundException
* @throws IOException * @throws IOException
*/ */
public static void saveJPGWithQuality(Chart chart, String fileName, float quality) throws FileNotFoundException, IOException { public static void saveJPGWithQuality(Chart chart, String fileName, BitmapFormat bitmapFormat, float quality) throws FileNotFoundException, IOException {
BufferedImage bufferedImage = getBufferedImage(chart); BufferedImage bufferedImage = getBufferedImage(chart);
...@@ -164,7 +182,7 @@ public final class BitmapEncoder { ...@@ -164,7 +182,7 @@ public final class BitmapEncoder {
ImageWriteParam iwp = writer.getDefaultWriteParam(); ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality); iwp.setCompressionQuality(quality);
File file = new File(fileName); File file = new File(addFileExtension(fileName, bitmapFormat));
FileImageOutputStream output = new FileImageOutputStream(file); FileImageOutputStream output = new FileImageOutputStream(file);
try { try {
writer.setOutput(output); writer.setOutput(output);
......
...@@ -130,7 +130,7 @@ public class XChartPanel extends JPanel { ...@@ -130,7 +130,7 @@ public class XChartPanel extends JPanel {
if (fileChooser.getFileFilter() == null) { if (fileChooser.getFileFilter() == null) {
BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG); BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG);
} else if (fileChooser.getFileFilter().getDescription().equals("*.jpg,*.JPG")) { } else if (fileChooser.getFileFilter().getDescription().equals("*.jpg,*.JPG")) {
BitmapEncoder.saveJPGWithQuality(chart, theFileToSave.getCanonicalPath().toString() + ".jpg", 1.0f); BitmapEncoder.saveJPGWithQuality(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.JPG, 1.0f);
} else if (fileChooser.getFileFilter().getDescription().equals("*.png,*.PNG")) { } else if (fileChooser.getFileFilter().getDescription().equals("*.png,*.PNG")) {
BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG); BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG);
} else if (fileChooser.getFileFilter().getDescription().equals("*.bmp,*.BMP")) { } else if (fileChooser.getFileFilter().getDescription().equals("*.bmp,*.BMP")) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment