From 985916664f6b9b7a02cccc389b141b299f4b0f8f Mon Sep 17 00:00:00 2001 From: matthew16550 Date: Sat, 11 Sep 2021 14:21:48 +1000 Subject: [PATCH] Extract ImageIO.read(byte[]) method --- src/net/sourceforge/plantuml/ClipboardLoop.java | 6 +----- src/net/sourceforge/plantuml/EmbeddedDiagram.java | 6 +----- src/net/sourceforge/plantuml/UmlDiagram.java | 3 +-- src/net/sourceforge/plantuml/creole/atom/AtomImg.java | 3 +-- src/net/sourceforge/plantuml/eggs/PSystemRIP.java | 7 +------ .../sourceforge/plantuml/math/ScientificEquationSafe.java | 3 +-- src/net/sourceforge/plantuml/security/ImageIO.java | 5 +++++ src/net/sourceforge/plantuml/swing/ImageWindow.java | 3 +-- src/net/sourceforge/plantuml/ugraphic/FontChecker.java | 3 +-- src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java | 7 +------ 10 files changed, 14 insertions(+), 32 deletions(-) diff --git a/src/net/sourceforge/plantuml/ClipboardLoop.java b/src/net/sourceforge/plantuml/ClipboardLoop.java index 64a6fbf49..cd0da6723 100644 --- a/src/net/sourceforge/plantuml/ClipboardLoop.java +++ b/src/net/sourceforge/plantuml/ClipboardLoop.java @@ -41,7 +41,6 @@ import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -88,12 +87,9 @@ public class ClipboardLoop { Log.info("No image generated"); } else { Log.info("Image ok " + desc.getDescription()); - final byte[] data = baos.toByteArray(); baos.close(); - final ByteArrayInputStream bais = new ByteArrayInputStream(data); - final BufferedImage image = ImageIO.read(bais); + final BufferedImage image = ImageIO.read(baos.toByteArray()); setClipboardImage(image); - bais.close(); Log.info("Image copied in clipboard"); } } diff --git a/src/net/sourceforge/plantuml/EmbeddedDiagram.java b/src/net/sourceforge/plantuml/EmbeddedDiagram.java index 92f4084ba..3b7ae9db5 100644 --- a/src/net/sourceforge/plantuml/EmbeddedDiagram.java +++ b/src/net/sourceforge/plantuml/EmbeddedDiagram.java @@ -37,7 +37,6 @@ package net.sourceforge.plantuml; import java.awt.geom.Dimension2D; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; @@ -187,10 +186,7 @@ public class EmbeddedDiagram implements CharSequence { final ByteArrayOutputStream os = new ByteArrayOutputStream(); system.exportDiagram(os, 0, new FileFormatOption(FileFormat.PNG)); os.close(); - final ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); - final BufferedImage im = ImageIO.read(is); - is.close(); - return im; + return ImageIO.read(os.toByteArray()); } public HorizontalAlignment getHorizontalAlignment() { diff --git a/src/net/sourceforge/plantuml/UmlDiagram.java b/src/net/sourceforge/plantuml/UmlDiagram.java index a3026ef00..a372e25f2 100644 --- a/src/net/sourceforge/plantuml/UmlDiagram.java +++ b/src/net/sourceforge/plantuml/UmlDiagram.java @@ -42,7 +42,6 @@ import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; import java.awt.image.BufferedImage; import java.io.BufferedOutputStream; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; @@ -270,7 +269,7 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot // exportDiagramTOxxBEREMOVED(baos, null, 0, new // FileFormatOption(FileFormat.PNG, at)); baos.close(); - final BufferedImage im = ImageIO.read(new ByteArrayInputStream(baos.toByteArray())); + final BufferedImage im = ImageIO.read(baos.toByteArray()); m.addImage(im); } m.finishAVI(); diff --git a/src/net/sourceforge/plantuml/creole/atom/AtomImg.java b/src/net/sourceforge/plantuml/creole/atom/AtomImg.java index a611eeae4..510881c86 100644 --- a/src/net/sourceforge/plantuml/creole/atom/AtomImg.java +++ b/src/net/sourceforge/plantuml/creole/atom/AtomImg.java @@ -38,7 +38,6 @@ package net.sourceforge.plantuml.creole.atom; import java.awt.Color; import java.awt.geom.Dimension2D; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.IOException; import net.sourceforge.plantuml.Dimension2DDouble; @@ -157,7 +156,7 @@ public class AtomImg extends AbstractAtom implements Atom { private static Atom buildRasterFromData(String source, final FontConfiguration fc, final byte[] data, double scale, Url url) throws IOException { - final BufferedImage read = ImageIO.read(new ByteArrayInputStream(data)); + final BufferedImage read = ImageIO.read(data); if (read == null) { return AtomTextUtils.createLegacy("(Cannot decode: " + source + ")", fc); } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemRIP.java b/src/net/sourceforge/plantuml/eggs/PSystemRIP.java index 671456138..7fb25ffc9 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemRIP.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemRIP.java @@ -35,9 +35,7 @@ */ package net.sourceforge.plantuml.eggs; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; @@ -60,10 +58,7 @@ public class PSystemRIP extends PlainStringsDiagram { strings.add(" Requiescat In Pace"); strings.add(" "); - final InputStream is = new ByteArrayInputStream(imm); - image = ImageIO.read(is); - is.close(); - + image = ImageIO.read(imm); imagePosition = GraphicPosition.BOTTOM; } diff --git a/src/net/sourceforge/plantuml/math/ScientificEquationSafe.java b/src/net/sourceforge/plantuml/math/ScientificEquationSafe.java index d8694fa04..e3b21b689 100644 --- a/src/net/sourceforge/plantuml/math/ScientificEquationSafe.java +++ b/src/net/sourceforge/plantuml/math/ScientificEquationSafe.java @@ -40,7 +40,6 @@ import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainPngBuilder; import java.awt.Color; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -119,7 +118,7 @@ public class ScientificEquationSafe { } try { final byte[] bytes = plainPngBuilder(getRollback()).writeByteArray(); - return new PixelImage(ImageIO.read(new ByteArrayInputStream(bytes)), AffineTransformType.TYPE_BILINEAR); + return new PixelImage(ImageIO.read(bytes), AffineTransformType.TYPE_BILINEAR); } catch (IOException e1) { return null; } diff --git a/src/net/sourceforge/plantuml/security/ImageIO.java b/src/net/sourceforge/plantuml/security/ImageIO.java index 0319f7bb1..2f98131ca 100644 --- a/src/net/sourceforge/plantuml/security/ImageIO.java +++ b/src/net/sourceforge/plantuml/security/ImageIO.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.security; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -76,6 +77,10 @@ public class ImageIO { public static BufferedImage read(InputStream is) throws IOException { return javax.imageio.ImageIO.read(is); } + + public static BufferedImage read(byte[] bytes) throws IOException { + return javax.imageio.ImageIO.read(new ByteArrayInputStream(bytes)); + } public static ImageInputStream createImageInputStream(java.io.File file) throws IOException { return javax.imageio.ImageIO.createImageInputStream(file); diff --git a/src/net/sourceforge/plantuml/swing/ImageWindow.java b/src/net/sourceforge/plantuml/swing/ImageWindow.java index a86940ce7..d9d5e1669 100644 --- a/src/net/sourceforge/plantuml/swing/ImageWindow.java +++ b/src/net/sourceforge/plantuml/swing/ImageWindow.java @@ -52,7 +52,6 @@ import java.awt.event.MouseMotionAdapter; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -336,7 +335,7 @@ class ImageWindow extends JFrame { final TextBlockBackcolored error = GraphicStrings.createForError(Arrays.asList(msg), false); try { final byte[] bytes = plainPngBuilder(error).writeByteArray(); - image = ImageIO.read(new ByteArrayInputStream(bytes)); + image = ImageIO.read(bytes); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java index 1198b46e8..c30d4473d 100644 --- a/src/net/sourceforge/plantuml/ugraphic/FontChecker.java +++ b/src/net/sourceforge/plantuml/ugraphic/FontChecker.java @@ -43,7 +43,6 @@ import java.awt.Shape; import java.awt.font.TextLayout; import java.awt.geom.PathIterator; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; @@ -184,7 +183,7 @@ public class FontChecker { } }; final byte[] bytes = plainPngBuilder(drawable).writeByteArray(); - return ImageIO.read(new ByteArrayInputStream(bytes)); + return ImageIO.read(bytes); } // public BufferedImage getBufferedImageOld(char c) throws IOException { diff --git a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java index 301a52dad..b5489d75d 100644 --- a/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java +++ b/src/net/sourceforge/plantuml/ugraphic/ImageBuilder.java @@ -43,7 +43,6 @@ import java.awt.Image; import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -401,11 +400,7 @@ public class ImageBuilder { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); writeImageInternal(new FileFormatOption(FileFormat.PNG), baos, Animation.singleton(affineTransform)); baos.close(); - - final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - final Image im = ImageIO.read(bais); - bais.close(); - return im; + return ImageIO.read(baos.toByteArray()); } private UGraphic2 createUGraphic(FileFormatOption option, final Dimension2D dim, Animation animationArg, double dx,