diff --git a/image-processing/pom.xml b/image-processing/pom.xml index 806cccf351..e2a06e2eed 100644 --- a/image-processing/pom.xml +++ b/image-processing/pom.xml @@ -1,73 +1,98 @@ - - 4.0.0 - image-processing - 1.0-SNAPSHOT - image-processing + + 4.0.0 + image-processing + 1.0-SNAPSHOT + image-processing - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + - - - net.imagej - ij - ${ij.version} - - - commons-logging - commons-logging - - - - - org.openimaj - core-image - ${core-image.version} - - - commons-logging - commons-logging - - - - - org.openpnp - opencv - 3.4.2-0 - - - com.twelvemonkeys.imageio - imageio-core - ${imageio.version} - - - com.twelvemonkeys.imageio - imageio-bmp - ${imageio.version} - - - net.sourceforge.tess4j - tess4j - ${tess4j.version} - - - org.bytedeco - tesseract-platform - ${tesseract-platform.version} - - - - - 1.3.5 - 1.51h - 3.3.2 - 4.5.1 - 4.1.0-1.5.2 - + + + net.imagej + ij + ${ij.version} + + + commons-logging + commons-logging + + + + + org.openimaj + core-image + ${core-image.version} + + + commons-logging + commons-logging + + + + + org.openpnp + opencv + 3.4.2-0 + + + com.twelvemonkeys.imageio + imageio-core + ${imageio.version} + + + com.twelvemonkeys.imageio + imageio-bmp + ${imageio.version} + + + net.sourceforge.tess4j + tess4j + ${tess4j.version} + + + org.bytedeco + tesseract-platform + ${tesseract-platform.version} + + + org.imgscalr + imgscalr-lib + ${imgscalr-version} + + + net.coobird + thumbnailator + ${thumbnailator-version} + + + com.github.downgoon + marvin + ${marvin-version} + pom + + + com.github.downgoon + MarvinPlugins + ${marvin-version} + + + + + 1.3.5 + 1.51h + 3.3.2 + 4.5.1 + 4.1.0-1.5.2 + 4.2 + 0.4.11 + 1.5.5 + \ No newline at end of file diff --git a/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java b/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java new file mode 100644 index 0000000000..1ae8af8e7a --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java @@ -0,0 +1,25 @@ +package com.baeldung.image.resize.core; + +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +public class Graphics2DExample { + + static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws IOException { + BufferedImage resizedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics2D = resizedImage.createGraphics(); + graphics2D.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null); + graphics2D.dispose(); + return resizedImage; + } + + public static void main(String[] args) throws IOException { + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = resizeImage(originalImage, 200, 200); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + } +} diff --git a/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java b/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java new file mode 100644 index 0000000000..5bc834cc08 --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java @@ -0,0 +1,24 @@ +package com.baeldung.image.resize.core; + +import java.awt.Image; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +public class ImageScaledInstanceExample { + static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws IOException { + Image resultingImage = originalImage.getScaledInstance(targetWidth, targetHeight, Image.SCALE_DEFAULT); + BufferedImage bufferedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB); + bufferedImage.getGraphics() + .drawImage(resultingImage, 0, 0, null); + return bufferedImage; + } + + public static void main(String[] args) throws IOException { + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = resizeImage(originalImage, 200, 200); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + } +} diff --git a/image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java b/image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java new file mode 100644 index 0000000000..f42d109f77 --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java @@ -0,0 +1,24 @@ +package com.baeldung.image.resize.imagescalr; + +import java.awt.image.BufferedImage; +import java.io.File; + +import javax.imageio.ImageIO; + +import org.imgscalr.Scalr; + +public class ImagescalrExample { + static BufferedImage simpleResizeImage(BufferedImage originalImage, int targetWidth) throws Exception { + return Scalr.resize(originalImage, targetWidth); + } + + static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws Exception { + return Scalr.resize(originalImage, Scalr.Method.AUTOMATIC, Scalr.Mode.AUTOMATIC, targetWidth, targetHeight, Scalr.OP_ANTIALIAS); + } + + public static void main(String[] args) throws Exception { + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = resizeImage(originalImage, 200, 200); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + } +} diff --git a/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java b/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java new file mode 100644 index 0000000000..706949ecc6 --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java @@ -0,0 +1,22 @@ +package com.baeldung.image.resize.marvin; + +import org.marvinproject.image.transform.scale.Scale; + +import marvin.image.MarvinImage; +import marvin.io.MarvinImageIO; + +public class MarvinExample { + static void resizeImage(String originalImagePath, int targetWidth, int targetHeight, String outputImagePath) { + MarvinImage image = MarvinImageIO.loadImage(originalImagePath); + Scale scale = new Scale(); + scale.load(); + scale.setAttribute("newWidth", targetWidth); + scale.setAttribute("newHeight", targetHeight); + scale.process(image.clone(), image, null, null, false); + MarvinImageIO.saveImage(image, outputImagePath); + } + + public static void main(String args[]) { + resizeImage("src/main/resources/images/sampleImage.jpg", 200, 200, "src/main/resources/images/sampleImage1.jpg"); + } +} diff --git a/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java b/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java new file mode 100644 index 0000000000..a7defb8259 --- /dev/null +++ b/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java @@ -0,0 +1,30 @@ +package com.baeldung.image.resize.thumbnailator; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; + +import javax.imageio.ImageIO; + +import net.coobird.thumbnailator.Thumbnails; + +public class ThumbnailatorExample { + static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws Exception { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + Thumbnails.of(originalImage) + .size(targetWidth, targetHeight) + .outputFormat("JPEG") + .outputQuality(0.90) + .toOutputStream(outputStream); + byte[] data = outputStream.toByteArray(); + ByteArrayInputStream inputStream = new ByteArrayInputStream(data); + return ImageIO.read(inputStream); + } + + public static void main(String[] args) throws Exception { + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = resizeImage(originalImage, 200, 200); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + } +} diff --git a/image-processing/src/main/resources/images/sampleImage.jpg b/image-processing/src/main/resources/images/sampleImage.jpg new file mode 100644 index 0000000000..c2f035ae64 Binary files /dev/null and b/image-processing/src/main/resources/images/sampleImage.jpg differ