Skip to content

Commit 7da4a38

Browse files
committed
Add support for all TIF files
1 parent e18653e commit 7da4a38

File tree

3 files changed

+62
-10
lines changed

3 files changed

+62
-10
lines changed

pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.applitools.imagetester</groupId>
66
<artifactId>ImageTester</artifactId>
7-
<version>3.6.4</version>
7+
<version>3.7.0</version>
88
<packaging>jar</packaging>
99
<properties>
1010
<maven.compiler.source>1.8</maven.compiler.source>
@@ -112,6 +112,11 @@
112112
<version>1.7.32</version>
113113
<scope>compile</scope>
114114
</dependency>
115+
<dependency>
116+
<groupId>com.twelvemonkeys.imageio</groupId>
117+
<artifactId>imageio-jpeg</artifactId>
118+
<version>3.12.0</version>
119+
</dependency>
115120
<dependency>
116121
<groupId>com.applitools</groupId>
117122
<artifactId>eyes-sdk-core-java5</artifactId>

src/main/java/com/applitools/imagetester/ImageTester.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.applitools.imagetester.lib.Utils;
2727

2828
public class ImageTester {
29-
private static final String cur_ver = "3.6.4";
29+
private static final String cur_ver = "3.7.0";
3030

3131
public static void main(String[] args) {
3232

src/main/java/com/applitools/imagetester/TestObjects/ImageFileTest.java

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,75 @@
44
import com.applitools.eyes.images.Eyes;
55
import com.applitools.imagetester.lib.Config;
66

7+
import javax.imageio.ImageIO;
8+
import java.awt.*;
79
import java.awt.image.BufferedImage;
810
import java.io.File;
11+
import java.io.IOException;
912

1013
public class ImageFileTest extends TestBase {
11-
public ImageFileTest(File file, Config conf) {
12-
super(file, conf);
14+
15+
public ImageFileTest(File file, Config config) {
16+
super(file, config);
1317
}
1418

1519
@Override
1620
public TestResults run(Eyes eyes) throws Exception {
17-
BufferedImage image = getImage(file());
21+
File actualFile = prepareImageFile(file());
22+
23+
BufferedImage image = getImage(actualFile);
1824
eyes.open(appName(), name(), viewport(image));
1925
eyes.check(
20-
file().getName(),
21-
new ImagesCheckSettingsFactory(image, config(), viewport(image)).create()
26+
actualFile.getName(),
27+
new ImagesCheckSettingsFactory(image, config(), viewport(image)).create()
2228
);
23-
image = null;
24-
return eyes.close(false);
29+
return eyes.close(true);
30+
}
31+
32+
private File prepareImageFile(File inputFile) throws IOException {
33+
return isTiff(inputFile) ? convertTiffToPng(inputFile) : inputFile;
34+
}
35+
36+
private boolean isTiff(File file) {
37+
String name = file.getName().toLowerCase();
38+
return name.endsWith(".tif") || name.endsWith(".tiff");
39+
}
40+
41+
private File convertTiffToPng(File tiffFile) throws IOException {
42+
BufferedImage image = readImageAsRgb(tiffFile);
43+
File output = new File(tiffFile.getParent(), replaceExtension(tiffFile.getName(), "png"));
44+
ImageIO.write(image, "png", output);
45+
return output;
46+
}
47+
48+
private BufferedImage readImageAsRgb(File file) throws IOException {
49+
BufferedImage image = ImageIO.read(file);
50+
if (image == null) {
51+
throw new IOException("Unsupported image format or corrupt file: " + file.getAbsolutePath());
52+
}
53+
54+
if (image.getType() != BufferedImage.TYPE_INT_RGB) {
55+
BufferedImage rgbImage = new BufferedImage(
56+
image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB
57+
);
58+
Graphics2D g = rgbImage.createGraphics();
59+
g.drawImage(image, 0, 0, null);
60+
g.dispose();
61+
return rgbImage;
62+
}
63+
64+
return image;
65+
}
66+
67+
private String replaceExtension(String filename, String newExt) {
68+
int dotIndex = filename.lastIndexOf('.');
69+
return (dotIndex == -1)
70+
? filename + "." + newExt
71+
: filename.substring(0, dotIndex) + "." + newExt;
2572
}
2673

2774
@Override
2875
public boolean isEmpty() {
2976
return false;
3077
}
31-
}
78+
}

0 commit comments

Comments
 (0)