1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.imaging.formats.jpeg.iptc;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.util.List;
23
24 import org.apache.commons.imaging.ImageReadException;
25 import org.apache.commons.imaging.ImagingTest;
26 import org.apache.commons.imaging.common.bytesource.ByteSource;
27 import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
28 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
29
30 public abstract class IptcBaseTest extends ImagingTest {
31 protected static boolean hasIptcData(final File file) {
32
33
34 if (!file.getName().toLowerCase().endsWith(".jpg"))
35 {
36 return false;
37
38
39
40 }
41
42 try {
43 final ByteSource byteSource = new ByteSourceFile(file);
44 return new JpegImageParser().hasIptcSegment(byteSource);
45 } catch (final Exception e) {
46
47
48 return false;
49 }
50 }
51
52 private static final ImageFilter HAS_IPTC_IMAGE_FILTER = IptcBaseTest::hasIptcData;
53
54 private static final ImageFilter JPEG_IMAGE_FILTER = file -> file.getName().toLowerCase().endsWith(".jpg");
55
56 protected File getImageWithIptcData() throws IOException,
57 ImageReadException {
58 return getTestImage(HAS_IPTC_IMAGE_FILTER);
59 }
60
61 protected static List<File> getImagesWithIptcData() throws IOException,
62 ImageReadException {
63 return getTestImages(HAS_IPTC_IMAGE_FILTER);
64 }
65
66 protected List<File> getImagesWithIptcData(final int max) throws IOException,
67 ImageReadException {
68 return getTestImages(HAS_IPTC_IMAGE_FILTER, max);
69 }
70
71 protected File getJpegImage() throws IOException, ImageReadException {
72 return getTestImage(JPEG_IMAGE_FILTER);
73 }
74
75 protected static List<File> getJpegImages() throws IOException, ImageReadException {
76 return getTestImages(JPEG_IMAGE_FILTER);
77 }
78
79 protected List<File> getJpegImages(final int max) throws IOException,
80 ImageReadException {
81 return getTestImages(JPEG_IMAGE_FILTER, max);
82 }
83
84 }