mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2026-05-28 00:00:03 -04:00
Added raster write test
+ fixed a small issue for PAM
This commit is contained in:
+46
-8
@@ -34,6 +34,7 @@ import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi;
|
|||||||
|
|
||||||
import org.mockito.InOrder;
|
import org.mockito.InOrder;
|
||||||
|
|
||||||
|
import javax.imageio.IIOImage;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.imageio.ImageWriteParam;
|
import javax.imageio.ImageWriteParam;
|
||||||
import javax.imageio.ImageWriter;
|
import javax.imageio.ImageWriter;
|
||||||
@@ -84,6 +85,7 @@ public abstract class ImageWriterAbstractTest<T extends ImageWriter> {
|
|||||||
|
|
||||||
protected static BufferedImage drawSomething(final BufferedImage image) {
|
protected static BufferedImage drawSomething(final BufferedImage image) {
|
||||||
Graphics2D g = image.createGraphics();
|
Graphics2D g = image.createGraphics();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
int width = image.getWidth();
|
int width = image.getWidth();
|
||||||
int height = image.getHeight();
|
int height = image.getHeight();
|
||||||
@@ -131,18 +133,54 @@ public abstract class ImageWriterAbstractTest<T extends ImageWriter> {
|
|||||||
public void testWrite() throws IOException {
|
public void testWrite() throws IOException {
|
||||||
ImageWriter writer = createWriter();
|
ImageWriter writer = createWriter();
|
||||||
|
|
||||||
for (RenderedImage testData : getTestData()) {
|
try {
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
for (RenderedImage testData : getTestData()) {
|
||||||
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
|
|
||||||
try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) {
|
try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) {
|
||||||
writer.setOutput(stream);
|
writer.setOutput(stream);
|
||||||
writer.write(drawSomething((BufferedImage) testData));
|
writer.write(drawSomething((BufferedImage) testData));
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
throw new AssertionError(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertTrue(buffer.size() > 0, "No image data written");
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
}
|
||||||
throw new AssertionError(e.getMessage(), e);
|
finally {
|
||||||
|
writer.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWriteRaster() throws IOException {
|
||||||
|
ImageWriter writer = createWriter();
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!writer.canWriteRasters()) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
assertTrue(buffer.size() > 0, "No image data written");
|
ImageWriteParam param = writer.getDefaultWriteParam();
|
||||||
|
|
||||||
|
for (RenderedImage testData : getTestData()) {
|
||||||
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
try (ImageOutputStream stream = ImageIO.createImageOutputStream(buffer)) {
|
||||||
|
writer.setOutput(stream);
|
||||||
|
|
||||||
|
writer.write(null, new IIOImage(testData.getTile(0, 0), null, null), param);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
throw new AssertionError(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertTrue(buffer.size() > 0, "No image data written");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
writer.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
@@ -50,11 +50,22 @@ public class DDSImageWriterTest extends ImageWriterAbstractTest<DDSImageWriter>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void writeRasters() throws IOException {
|
||||||
|
ImageWriter writer = createWriter();
|
||||||
|
|
||||||
|
assertTrue(writer.canWriteRasters());
|
||||||
|
|
||||||
|
// Full tests in super class
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void writeMipmap() throws IOException {
|
void writeMipmap() throws IOException {
|
||||||
ImageWriter writer = createWriter();
|
ImageWriter writer = createWriter();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
assertTrue(writer.canWriteSequence());
|
||||||
|
|
||||||
List<BufferedImage> testData = getTestData();
|
List<BufferedImage> testData = getTestData();
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||||
int previousSize = 0;
|
int previousSize = 0;
|
||||||
|
|||||||
+6
-1
@@ -111,6 +111,7 @@ enum TupleType {
|
|||||||
|
|
||||||
static TupleType forPAM(Raster raster) {
|
static TupleType forPAM(Raster raster) {
|
||||||
SampleModel sampleModel = raster.getSampleModel();
|
SampleModel sampleModel = raster.getSampleModel();
|
||||||
|
|
||||||
switch (sampleModel.getTransferType()) {
|
switch (sampleModel.getTransferType()) {
|
||||||
case DataBuffer.TYPE_BYTE:
|
case DataBuffer.TYPE_BYTE:
|
||||||
case DataBuffer.TYPE_USHORT:
|
case DataBuffer.TYPE_USHORT:
|
||||||
@@ -145,8 +146,12 @@ enum TupleType {
|
|||||||
return TupleType.RGB;
|
return TupleType.RGB;
|
||||||
}
|
}
|
||||||
else if (bands == 4) {
|
else if (bands == 4) {
|
||||||
|
// Ambiguous, could also be CMYK...
|
||||||
return TupleType.RGB_ALPHA;
|
return TupleType.RGB_ALPHA;
|
||||||
}
|
}
|
||||||
|
else if (bands == 5) {
|
||||||
|
return TupleType.CMYK_ALPHA;
|
||||||
|
}
|
||||||
// ...else fall through...
|
// ...else fall through...
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +159,7 @@ enum TupleType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static TupleType forPAM(ImageTypeSpecifier type) {
|
static TupleType forPAM(ImageTypeSpecifier type) {
|
||||||
// Support only 1 bit b/w, 8-16 bit gray and 8-16 bit/sample RGB
|
// Support only 1 bit b/w, 8-16 bit gray, 8-16 bit/sample RGB and 8-16 bit/sample CMYK
|
||||||
switch (type.getBufferedImageType()) {
|
switch (type.getBufferedImageType()) {
|
||||||
// 1 bit b/w or b/w + a
|
// 1 bit b/w or b/w + a
|
||||||
case BufferedImage.TYPE_BYTE_BINARY:
|
case BufferedImage.TYPE_BYTE_BINARY:
|
||||||
|
|||||||
Reference in New Issue
Block a user