use ImageWriter to export to png image.

This commit is contained in:
2022-10-05 16:00:29 +09:00
parent e43b688d7f
commit aa61113357
3 changed files with 14 additions and 10 deletions

View File

@ -4,7 +4,6 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
@ -105,12 +104,14 @@ public class BioFormatsImageThumbnail {
protected static byte[] getPngByteArray(final BufferedImage image) throws BioFormatsImageException {
byte[] ret = null;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(baos);) {
image.flush();
ImageIO.write(image, "png", bos);
bos.flush();
bos.close();
try (final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final ImageOutputStream ios = ImageIO.createImageOutputStream(baos);) {
final ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
final ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writer.setOutput(ios);
writer.write(null, new IIOImage(image, null, null), param);
writer.dispose();
ret = baos.toByteArray();
} catch (final IOException e) {
throw new BioFormatsImageException(e);
@ -131,6 +132,9 @@ public class BioFormatsImageThumbnail {
default:
throw new BioFormatsImageException("Unsupported image format: " + mimeType);
}
if (bytes.length == 0) {
throw new BioFormatsImageException("Failed to convert to " + mimeType + " format");
}
final String dataUri = "data:" + mimeType + ";base64," + Base64.getEncoder().encodeToString(bytes);
return dataUri;