# javax.imageio

***

**1. Loading an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));
```

**2. Writing an Image**

```java
ImageIO.write(image, "jpg", new File("image.jpg"));
```

**3. Getting Image Metadata**

```java
ImageReader reader = ImageIO.getImageReadersByFormatName("png").next();
reader.setInput(ImageIO.createImageInputStream(new File("image.png")));
ImageMetadata metadata = reader.getImageMetadata(0);
```

**4. Reading an Entire Image with Metadata**

```java
ImageReader reader = ImageIO.getImageReadersByFormatName("png").next();
reader.setInput(ImageIO.createImageInputStream(new File("image.png")));
BufferedImage image = reader.read(0);
ImageMetadata metadata = reader.getImageMetadata(0);
```

**5. Reading a Region of an Image**

```java
ImageReader reader = ImageIO.getImageReadersByFormatName("png").next();
reader.setInput(ImageIO.createImageInputStream(new File("image.png")));
BufferedImage image = reader.read(new Rectangle(0, 0, 100, 100));
```

**6. Converting Images between Formats**

```java
ImageReader reader = ImageIO.getImageReadersByFormatName("png").next();
reader.setInput(ImageIO.createImageInputStream(new File("image.png")));
BufferedImage image = reader.read(0);

ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(ImageIO.createImageOutputStream(new File("image.jpg")));
writer.write(image);
```

**7. Scaling an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));
BufferedImage scaledImage = ImageIO.write(image.getScaledInstance(200, 200, Image.SCALE_SMOOTH));
```

**8. Rotating an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));
AffineTransform transform = AffineTransform.getRotateInstance(Math.toRadians(45), image.getWidth() / 2, image.getHeight() / 2);
BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = rotatedImage.createGraphics();
g2d.setTransform(transform);
g2d.drawImage(image, null, null);
g2d.dispose();
```

**9. Cropping an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));
BufferedImage croppedImage = image.getSubimage(0, 0, 100, 100);
```

**10. Flipping an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));
BufferedImage flippedImage = ImageIO.write(image.getScaledInstance(image.getWidth(), -image.getHeight(), Image.SCALE_SMOOTH));
```

**11. Merging Two Images**

```java
BufferedImage image1 = ImageIO.read(new File("image1.png"));
BufferedImage image2 = ImageIO.read(new File("image2.png"));

int mergedWidth = image1.getWidth() + image2.getWidth();
int mergedHeight = Math.max(image1.getHeight(), image2.getHeight());

BufferedImage mergedImage = new BufferedImage(mergedWidth, mergedHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = mergedImage.createGraphics();
g2d.drawImage(image1, null, null);
g2d.drawImage(image2, image1.getWidth(), 0, null);
g2d.dispose();
```

**12. Adding a Border to an Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

int borderWidth = 10;
BufferedImage borderedImage = new BufferedImage(image.getWidth() + 2 * borderWidth, image.getHeight() + 2 * borderWidth, BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = borderedImage.createGraphics();
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0, borderedImage.getWidth(), borderedImage.getHeight());
g2d.drawImage(image, borderWidth, borderWidth, null);
g2d.dispose();
```

**13. Creating a Thumbnail**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

int thumbnailWidth = 100;
int thumbnailHeight = 100;

BufferedImage thumbnail = ImageIO.write(image.getScaledInstance(thumbnailWidth, thumbnailHeight, Image.SCALE_SMOOTH));
```

**14. Creating a Composite Image**

```java
BufferedImage image1 = ImageIO.read(new File("image1.png"));
BufferedImage image2 = ImageIO.read(new File("image2.png"));

BufferedImage compositeImage = new BufferedImage(image1.getWidth(), image1.getHeight(), BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = compositeImage.createGraphics();
g2d.drawImage(image1, null, null);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
g2d.drawImage(image2, 0, 0, null);
g2d.dispose();
```

**15. Creating an Animated GIF**

```java
List<BufferedImage> images = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
    BufferedImage image = ImageIO.read(new File("image" + i + ".png"));
    images.add(image);
}

ImageIO.write(new GIFImageWriter(new ImageOutputStream(new File("animated.gif"))), new GIFSequenceWriter(images), new ImageWriteParam(ImageIO.getInstance().getDefaultWriter(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB)), 0));
```

**16. Creating a Scalable Vector Graphic (SVG)**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

SVGGraphics2D graphics = new SVGGraphics2D(100, 100);
graphics.drawImage(image, 0, 0, null);

graphics.getSVGDocument().write(new FileWriter("image.svg"));
```

**17. Reading an Image from a URL**

```java
URL url = new URL("http://example.com/image.png");
BufferedImage image = ImageIO.read(url);
```

**18. Writing an Image to a ByteArrayOutputStream**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
```

**19. Creating a Colorized Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

Color color = new Color(128, 128, 128);
BufferedImage colorizedImage = ImageIO.write(image.getColoredInstance(color, true));
```

**20. Creating a Grayscale Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage grayscaleImage = ImageIO.write(image.getGrayInstance(true));
```

**21. Creating a Binary Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage binaryImage = ImageIO.write(image.getBinaryInstance(128));
```

**22. Creating a Dithered Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage ditheredImage = ImageIO.write(image.getDitheredInstance(16, 16));
```

**23. Creating a Filtered Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImageFilter filter = new GaussianFilter();
BufferedImage filteredImage = filter.filter(image, null);
```

**24. Creating a Warped Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage warpedImage = ImageIO.write(image.getWarpedInstance(100, 100, 10, 10));
```

**25. Creating a Lens Distorted Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage lensDistortedImage = ImageIO.write(image.getLensDistortedInstance(100, 100));
```

**26. Creating a HDR Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage hdrImage = ImageIO.write(image.getHDRInstance(100, 100));
```

**27. Creating a Logarithmic Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage logarithmicImage = ImageIO.write(image.getLogarithmicInstance(100, 100));
```

**28. Creating a Perceptually Uniform Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage puColorImage = ImageIO.write(image.getPUColorInstance(100, 100));
```

**29. Creating a YCbCr Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage ycbcrColorImage = ImageIO.write(image.getYcbcrInstance(100, 100));
```

**30. Creating an XYZ Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage xyzColorImage = ImageIO.write(image.getXYZInstance(100, 100));
```

**31. Creating a CIECAM02 Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage cieCam02ColorImage = ImageIO.write(image.getCIECAM02Instance(100, 100));
```

**32. Creating an XYZToLAB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage xyzToLABColorImage = ImageIO.write(image.getXYZToLABInstance(100, 100));
```

**33. Creating a LABToXYZ Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage labToXYZColorImage = ImageIO.write(image.getLABToXYZInstance(100, 100));
```

**34. Creating a CIECAM02ToXYZ Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage cieCam02ToXYZColorImage = ImageIO.write(image.getCIECAM02ToXYZInstance(100, 100));
```

**35. Creating a XYZToCIECAM02 Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage xyzToCieCam02ColorImage = ImageIO.write(image.getXYZToCIECAM02Instance(100, 100));
```

**36. Creating a RGBToNTSC Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToNtscColorImage = ImageIO.write(image.getRGBToNTSCInstance(100, 100));
```

**37. Creating a NTSCToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage ntscToRgbColorImage = ImageIO.write(image.getNTSCToRGBInstance(100, 100));
```

**38. Creating an HSVToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage hsvToRgbColorImage = ImageIO.write(image.getHSVToRGBInstance(100, 100));
```

**39. Creating a RGBToHSV Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToHsvColorImage = ImageIO.write(image.getRGBToHSVInstance(100, 100));
```

**40. Creating a CMYKToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage cmykToRgbColorImage = ImageIO.write(image.getCMYKToRGBInstance(100, 100));
```

**41. Creating a RGBToCMYK Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToCmykColorImage = ImageIO.write(image.getRGBToCMYKInstance(100, 100));
```

**42. Creating a YCbCrToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage yCbCrToRgbColorImage = ImageIO.write(image.getYCbCrToRGBInstance(100, 100));
```

**43. Creating a RGBToYCbCr Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToYCbCrColorImage = ImageIO.write(image.getRGBToYCbCrInstance(100, 100));
```

**44. Creating a YUVToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage yuvToRgbColorImage = ImageIO.write(image.getYUVToRGBInstance(100, 100));
```

**45. Creating a RGBToYUV Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToYuvColorImage = ImageIO.write(image.getRGBToYUVInstance(100, 100));
```

**46. Creating a HSBToRGB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage hsbToRgbColorImage = ImageIO.write(image.getHSBToRGBInstance(100, 100));
```

**47. Creating a RGBToHSB Color Space Image**

```java
BufferedImage image = ImageIO.read(new File("image.png"));

BufferedImage rgbToHsbColorImage = ImageIO.write(image.getRGBToHSBInstance(100, 100));
```

\*\*48. Creating a HLS
