BAEL-7839: Converting Image to BufferedImage in Java (#16403)
* BAEL-7765: How to fix JsonParseException: Unexpected character (code 115) when parsing unquoted JSON in Jackson * BAEL-7839: Converting Image to BufferedImage in Java
This commit is contained in:
parent
684ee81ed1
commit
a7ad916d27
|
@ -0,0 +1,41 @@
|
|||
package com.baeldung.imageprocessing.imagetobufferedimage;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ImageToBufferedImage {
|
||||
|
||||
// Method 1: Using BufferedImage Constructor
|
||||
public BufferedImage convertUsingConstructor(Image image) throws IllegalArgumentException {
|
||||
int width = image.getWidth(null);
|
||||
int height = image.getHeight(null);
|
||||
if (width <= 0 || height <= 0) {
|
||||
throw new IllegalArgumentException("Image dimensions are invalid");
|
||||
}
|
||||
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
|
||||
bufferedImage.getGraphics().drawImage(image, 0, 0, null);
|
||||
return bufferedImage;
|
||||
}
|
||||
|
||||
// Method 2: Casting Image to BufferedImage
|
||||
public BufferedImage convertUsingCasting(Image image) throws ClassCastException {
|
||||
if (image instanceof BufferedImage) {
|
||||
return (BufferedImage) image;
|
||||
} else {
|
||||
throw new ClassCastException("Image type is not compatible with BufferedImage");
|
||||
}
|
||||
}
|
||||
|
||||
// Method 3: Using ImageIO Class
|
||||
public BufferedImage convertUsingImageIO(String filePath) throws IOException {
|
||||
try {
|
||||
File file = new File(filePath);
|
||||
return ImageIO.read(file);
|
||||
} catch (Exception e) {
|
||||
throw new IOException("Error reading image file: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package com.baeldung.image.resize.imagetobufferedimage;
|
||||
|
||||
import com.baeldung.imageprocessing.imagetobufferedimage.ImageToBufferedImage;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class ImageToBufferedImageUnitTest {
|
||||
Image image = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg"));
|
||||
|
||||
public ImageToBufferedImageUnitTest() throws IOException {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenConvertUsingConstructorWithValidDimensions_thenImageGeneratedWithoutError() {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
BufferedImage bufferedImage = converter.convertUsingConstructor(image);
|
||||
assertNotNull(bufferedImage);
|
||||
assertEquals(image.getWidth(null), bufferedImage.getWidth());
|
||||
assertEquals(image.getHeight(null), bufferedImage.getHeight());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void whenConvertUsingConstructorWithInvalidDimensions_thenImageGeneratedWithError() {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
converter.convertUsingConstructor(new BufferedImage(-100, -100, BufferedImage.TYPE_INT_ARGB));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenConvertUsingCastingWithCompatibleImageType_thenImageGeneratedWithoutError() {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
BufferedImage bufferedImage = converter.convertUsingCasting(image);
|
||||
assertNotNull(bufferedImage);
|
||||
assertEquals(image.getWidth(null), bufferedImage.getWidth());
|
||||
assertEquals(image.getHeight(null), bufferedImage.getHeight());
|
||||
}
|
||||
|
||||
@Test(expected = ClassCastException.class)
|
||||
public void whenConvertUsingCastingWithIncompatibleImageType_thenImageGeneratedWithError() {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
// PNG format is not directly supported by BufferedImage
|
||||
Image image = new ImageIcon("src/main/resources/images/baeldung.png").getImage();
|
||||
converter.convertUsingCasting(image);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenConvertUsingImageIOWithValidFile_thenImageGeneratedWithoutError() throws IOException {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
BufferedImage bufferedImage = converter.convertUsingImageIO("src/main/resources/images/sampleImage.jpg");
|
||||
assertNotNull(bufferedImage);
|
||||
assertEquals(image.getWidth(null), bufferedImage.getWidth());
|
||||
assertEquals(image.getHeight(null), bufferedImage.getHeight());
|
||||
}
|
||||
|
||||
@Test(expected = IOException.class)
|
||||
public void whenConvertUsingImageIOWithInvalidFile_thenImageGeneratedWithError() throws IOException {
|
||||
ImageToBufferedImage converter = new ImageToBufferedImage();
|
||||
converter.convertUsingImageIO("invalid_file.jpg");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue