Skip to content

Commit 76dc6eb

Browse files
committed
#15 adding a basic VImage creation for an image with 8-bit RGB color
1 parent 9f7c3c4 commit 76dc6eb

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package org.epics.vtype;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.awt.image.BufferedImage;
6+
import java.awt.image.DataBufferByte;
7+
import java.io.File;
8+
import java.io.IOException;
9+
10+
import javax.imageio.ImageIO;
11+
12+
import org.epics.util.array.ArrayByte;
13+
import org.epics.util.array.ListNumber;
14+
import org.junit.Test;
15+
16+
public class VImageTest {
17+
18+
/**
19+
* A test for the creation of a {@link VImage} data structure using an example image
20+
*/
21+
@Test
22+
public void of() {
23+
BufferedImage img = null;
24+
VImage vImage = null;
25+
boolean done = false;
26+
try {
27+
img = ImageIO.read(VType.class.getResource("Tulips.jpg"));
28+
vImage = VImage.of(img.getHeight(), img.getWidth(),
29+
ArrayByte.of(((DataBufferByte) img.getRaster().getDataBuffer()).getData()), VImageDataType.pvByte,
30+
Alarm.none(), Time.now());
31+
BufferedImage vImg = toImage(vImage);
32+
for (int x = 0; x < vImage.getWidth(); x++) {
33+
for (int y = 0; y < vImage.getHeight(); y++) {
34+
assertEquals(img.getRGB(x, y), vImg.getRGB(x, y));
35+
}
36+
}
37+
done = true;
38+
} catch (IOException e) {
39+
} finally {
40+
if (!done) {
41+
BufferedImage bf = toImage(vImage);
42+
try {
43+
ImageIO.write(bf, "png", new File("src/test/resources/org/diirt/vtype/Tuplips-failed.jpg"));
44+
} catch (IOException e) {
45+
}
46+
}
47+
}
48+
}
49+
50+
private static BufferedImage toImage(VImage vImage) {
51+
if (vImage.getVImageType() == VImageType.TYPE_3BYTE_BGR) {
52+
BufferedImage image = new BufferedImage(vImage.getWidth(), vImage.getHeight(),
53+
BufferedImage.TYPE_3BYTE_BGR);
54+
ListNumber data = vImage.getData();
55+
for (int i = 0; i < data.size(); i++) {
56+
((DataBufferByte) image.getRaster().getDataBuffer()).getData()[i] = data.getByte(i);
57+
}
58+
return image;
59+
} else {
60+
throw new UnsupportedOperationException(
61+
"No support for creating a BufferedImage from Image Type: " + vImage.getVImageType());
62+
}
63+
}
64+
}
606 KB
Loading

0 commit comments

Comments
 (0)