

{"id":13169,"date":"2018-04-11T12:04:15","date_gmt":"2018-04-11T12:04:15","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=13169"},"modified":"2026-05-30T15:28:29","modified_gmt":"2026-05-30T09:58:29","slug":"java-image-processing","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/java-image-processing\/","title":{"rendered":"Learn Java Image Processing &#8211; Face Detection, Watermarking"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:1457,&quot;href&quot;:&quot;https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Java_(programming_language)&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251209074728\\\/https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Java_(programming_language)&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-11 07:13:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-15 05:49:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-18 07:11:43&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-25 19:19:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-01 10:45:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-04 18:11:25&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-09 14:35:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-13 08:39:47&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-18 13:17:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-21 22:42:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-26 19:12:21&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-31 07:20:51&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-08 11:50:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-12 11:00:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-16 05:47:52&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-22 16:13:14&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-25 18:35:28&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-03-02 13:34:50&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-06 12:14:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-09 17:12:49&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-19 16:12:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-24 23:57:08&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-28 17:06:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-09 10:03:04&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-14 22:21:21&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-18 15:35:05&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-23 22:58:29&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-28 17:30:38&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-05-02 04:30:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-06 09:46:06&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-11 11:47:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-14 18:28:55&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-05-19 00:49:57&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-26 08:32:44&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-01 01:19:45&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-06-08 11:25:39&quot;,&quot;http_code&quot;:404}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-08 11:25:39&quot;,&quot;http_code&quot;:404},&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<p>The <strong><a href=\"https:\/\/data-flair.training\/blogs\/convert-colored-image\/\">last article,\u00a0Java Image Processing<\/a><\/strong> is not over yet.\u00a0In the last article, we learned about what image processing is and how to convert a colored image using Java. Now let&#8217;s deep dive into the advanced functioning of Image Processing in Java.<\/p>\n<p>Explore the features of Image Processing in Java to recognise facial detection, generating the pixels of an image, reading and writing on the image using Java, How to change the orientation of an image, creating a mirror image, and many more.<\/p>\n<p>Let&#8217;s study Java Image Processing Tutorial.<\/p>\n<div id=\"attachment_13187\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-13187\" class=\"wp-image-13187 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg\" alt=\"Java Image Processing\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-13187\" class=\"wp-caption-text\">Java Image Processing &#8211; A Complete Guide 2018<\/p><\/div>\n<h3>What is Java Image Processing?<\/h3>\n<p>The various parts that we are going to study in Java Image Processing are \u2013<\/p>\n<ul>\n<li>Read and Write<\/li>\n<li>Get and set Pixels<\/li>\n<li>How to Create a random pixel image in Java?<\/li>\n<li>Creating a mirror image<\/li>\n<li>Face Detection<\/li>\n<li>Watermarking an image<\/li>\n<li>How to Change orientation of an image in Java<\/li>\n<li><strong>How to Convert Colored image to greyscale image conversion?<\/strong><\/li>\n<li><strong>Converting Colored image to Negative image conversion?<\/strong><\/li>\n<li><strong>Coloured to Red Green Blue Image Conversion<\/strong><\/li>\n<li><strong>Coloured image to Sepia image conversion<\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/convert-colored-image\/\"><strong>Last Four image conversions are a study here<\/strong><\/a><\/p>\n<h3>Read and Write Java Image<\/h3>\n<p>Several classes required to play\/ complete the processing of Java Image:<\/p>\n<ul>\n<li>For reading and writing picture document we need to import the File class [<a href=\"https:\/\/data-flair.training\/blogs\/java-file-class\/\"><strong>import java.io.File;<\/strong><\/a>]. This class speaks to record and catalog way names when all is said in done.<\/li>\n<li>To deal with errors we utilize the IOException class [ import java.io.IOException; ]<\/li>\n<li>To hold the picture we make the BufferedImage protest for that we utilize BufferedImage class [ import java.awt.image.BufferedImage; ]. This question utilize to store a picture in RAM.<\/li>\n<li>To play out the picture read compose activity we will import the ImageIO class [import javax.imageio.ImageIO;]. This class has static strategies to peruse and compose a picture.<\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/java-string-methods-and-constructor\/\">Let&#8217;s revise Java String, Methods, and Constructor \u2013 Syntax and Example<\/a><\/strong><\/p>\n<p><strong>i. Java Image Processing Example-<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import java.io.File;\r\nimport java.io.IOException;\r\nimport java.awt.image.BufferedImage;\r\nimport javax.imageio.ImageIO;\r\npublic class MyImage\r\n  {\r\n\u00a0\u00a0  \u00a0 public static void main(String args[])throws IOException\r\n\u00a0\u00a0\u00a0     {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    int width = 963;\u00a0\u00a0\u00a0 \/\/width of the image\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    int height = 640;\u00a0\u00a0 \/\/height of the image\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    BufferedImage image = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0     try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0     File input_file = new File(\"G:\\\\Inp.jpg\"); \/\/image file path\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0     image = new BufferedImage(width, height,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage.TYPE_INT_ARGB);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0     image = ImageIO.read(input_file);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0     System.out.println(\"Reading complete.\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  \u00a0 System.out.println(\"Error: \"+e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   }\r\n\/\/ WRITE IMAGE\r\n    \u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0  \u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  \u00a0\u00a0\u00a0\u00a0\u00a0 File output_file = new File(\"G:\\\\Out.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   \u00a0\u00a0 ImageIO.write(image, \"jpg\", output_file);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  \u00a0 System.out.println(\"Writing complete.\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   }\r\n\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 System.out.println(\"Error: \"+e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  }\r\n\u00a0\u00a0\u00a0  }\r\n }<\/pre>\n<h3>Getting Pixel Value and Set of a Pixel Value<\/h3>\n<p>This is important Part of Java Image Processing because pixels are the smallest unit of a picture which comprises of four parts Alpha (straightforwardness measure), Red, Green, and Blue and in short (ARGB). The estimation of the considerable number of segments lies in the vicinity of 0 and 255 both comprehensive. Zero means the part is missing and 255 means the segment is completely present.<\/p>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/java-number\/\">\u00a0Let&#8217;s Look at Java Number Methods with Syntax and Examples<\/a><\/strong><\/p>\n<p><strong>Note:<\/strong><\/p>\n<p>Since 2^8 = 256 and the estimation of the pixel parts lie in the vicinity of 0 and 255, so we require just 8-bits to store the qualities. In this way, add up to a number of bits required to store the ARGB esteems is 8*4=32 bits or 4 bytes. As the request connotes Alpha procures furthest left 8 bits, Blue secures furthest right 8 bits.<\/p>\n<h4><strong>i. The bit position-<\/strong><\/h4>\n<p>Blue segment being\u00a0 \u00a0 \u00a0 7-0,<\/p>\n<p>Green segment being\u00a0 \u00a0 15-8,<\/p>\n<p>Red segment being\u00a0 \u00a0 \u00a0 \u00a0 23-16,<\/p>\n<p>Alpha segment being\u00a0 \u00a0 \u00a031-24,<\/p>\n<h4><strong>ii. Program to Work with a Pixel Value<\/strong><\/h4>\n<p>Here, we require a program to work with a pixel value in Java Image Processing.<\/p>\n<pre class=\"EnlighterJSRAW\">import java.io.File;\r\nimport java.io.IOException;\r\nimport java.awt.image.BufferedImage;\r\nimport javax.imageio.ImageIO;\r\npublic class GetSetPixels\r\n {\r\n\u00a0 \u00a0\u00a0 public static void main(String args[])throws IOException\r\n\u00a0\u00a0    \u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0   \u00a0\u00a0 BufferedImage img = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    File f = null;\r\n\/\/read image\r\n   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0     \u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    \u00a0\u00a0\u00a0\u00a0 f = new File(\"G:\\\\Inp.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    \u00a0 img = ImageIO.read(f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0      }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int width = img.getWidth();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int height = img.getHeight();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int p = img.getRGB(0,0);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int a = (p&gt;&gt;24) &amp; 0xff;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int r = (p&gt;&gt;16) &amp; 0xff;\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int g = (p&gt;&gt;8) &amp; 0xff;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int a = p &amp; 0xff;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 a = 255;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 r = 100;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 g = 150;\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b = 200;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 p = (a&lt;&lt;24) | (r&lt;&lt;16) | (g&lt;&lt;8) | b;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img.setRGB(0, 0, p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"G:\\\\Out.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ImageIO.write(img, \"jpg\", f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  }\r\n\u00a0\u00a0\u00a0   }\r\n  }<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/polymorphism-in-java\/\">Do You Know Polymorphism in Java with Example<\/a><\/strong><\/p>\n<h3>Creating a Random Pixel Java Image<\/h3>\n<p>In this Java Image Processing tutorial, we will learn about the creation of a random pixel image, for this, we don\u2019t need an input image, we will create oneself.<\/p>\n<p><strong>i. An algorithm to create random pixel image \u2013<\/strong><\/p>\n<ul>\n<li>The first step is to set the dimension of the desired image.<\/li>\n<li>We need to create a BufferedImage object which will hold the image.<\/li>\n<li>Now we need to generate random numbers of red, blue, green and Alfa components.<\/li>\n<li>We need to set the randomly generate ARGB.<\/li>\n<li>Repeat the step 3 and 4 for each pixel.<\/li>\n<\/ul>\n<p><strong>ii. Implementation of an algorithm \u2013<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import java.io.File;\r\nimport java.io.IOException;\r\nimport java.awt.image.BufferedImage;\r\nimport javax.imageio.ImageIO;\r\npublic class RandomImage\r\n{\r\n\u00a0\u00a0\u00a0 public static void main(String args[])throws IOException\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int width = 640, height = 320;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage img = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ file object\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 File f = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ create random values pixel by pixel\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for (int y = 0; y &lt; height; y++)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for (int x = 0; x &lt; width; x++)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int a = (int)(Math.random()*256); \/\/generating\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int r = (int)(Math.random()*256); \/\/values\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int g = (int)(Math.random()*256); \/\/less than\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int b = (int)(Math.random()*256); \/\/256\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int p = (a&lt;&lt;24) | (r&lt;&lt;16) | (g&lt;&lt;8) | b; \/\/pixel\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img.setRGB(x, y, p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ write image\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"G:\\\\Out.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ImageIO.write(img, \"jpg\", f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Error: \" + e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/encapsulation-in-java\/\">Let&#8217;s explore Encapsulation in Java with Advantages and Example<\/a><\/strong><\/p>\n<h3>Creating Mirror Image in Java<\/h3>\n<p>The primary logic is to simply get the source pixel esteems from left to right and set the same in the outcome picture from appropriate to left.<\/p>\n<p><strong>i. An algorithm to create mirror image in Java\u2013<\/strong><\/p>\n<ul>\n<li>Read the source picture in a BufferedImage to peruse the given picture.<\/li>\n<li>Get the measurements of the given picture.<\/li>\n<li>Make another BufferedImage question of the same measurement to hold the identical representation.<\/li>\n<li>Get ARGB (Alpha, Red, Green, and Blue) values from source picture [in left to right fashion].<\/li>\n<li>Set ARGB (Alpha, Red, Green, and Blue) to recently made picture [in ideal to left fashion].<\/li>\n<li>Rehash the means 4 and 5 for every pixel of picture<\/li>\n<\/ul>\n<p><strong>ii. Implementation of an algorithm-\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import java.io.File;\r\nimport java.io.IOException;\r\nimport java.awt.image.BufferedImage;\r\nimport javax.imageio.ImageIO;\r\npublic class MirrorImage\r\n{\r\n\u00a0\u00a0\u00a0 public static void main(String args[])throws IOException\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage simg = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 File f = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"G:\\\\Inp.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 simg = ImageIO.read(f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Error: \" + e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int width = simg.getWidth();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int height = simg.getHeight();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage mimg = new BufferedImage(width, height,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage.TYPE_INT_ARGB);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for (int y = 0; y &lt; height; y++)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for (int lx = 0, rx = width - 1; lx &lt; width; lx++, rx--)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int p = simg.getRGB(lx, y);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 mimg.setRGB(rx, y, p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ save mirror image\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"G:\\\\Out.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ImageIO.write(mimg, \"jpg\", f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Error: \" + e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/hierarchical-data-structure\/\">Read About Hierarchical Data Structure in Java \u2013 Binary Tree, Binary Search Tree, and Heap<\/a><\/strong><\/p>\n<h3>Face Detection in Java<\/h3>\n<p>In the basic set on Java Image Processing, BufferedImage class of Java was utilized for preparing pictures the uses of BufferedImage class is restricted to a few activities just, i.e, we can adjust the R, G, B estimations of given info picture and create the changed picture. For complex picture handling, for example, confront\/protest recognition OpenCV library is utilized which we will use in this article.<\/p>\n<p>At first we have to setup OpenCV for Java, we prescribe to utilize obscure for the same since it is anything but difficult to utilize and setup.<\/p>\n<p>Presently lets see a portion of the strategies required for face detection.<\/p>\n<ul>\n<li><strong>CascadeClassifier():<\/strong> This class is utilized to stack the prepared fell arrangement of faces which we will use to distinguish look for any info picture.<\/li>\n<li>imread<strong>()\/Imcodecs.imwrite():<\/strong> These techniques are utilized to peruse and compose pictures as Mat items which are rendered by OpenCV.<\/li>\n<li><strong>rectangle():<\/strong> Used to produce rectangle box sketching out appearances distinguished, it takes four contentions \u2013 input_image, top_left_point, bottom_right_point, color_of_border.<\/li>\n<\/ul>\n<p><strong>i. Implementation<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package ocv;\r\nimport org.opencv.core.Core;\r\nimport org.opencv.core.Mat;\r\nimport org.opencv.core.MatOfRect;\r\nimport org.opencv.core.Point;\r\nimport org.opencv.core.Rect;\r\nimport org.opencv.core.Scalar;\r\nimport org.opencv.imgcodecs.Imgcodecs;\r\nimport org.opencv.imgproc.Imgproc;\r\nimport org.opencv.objdetect.CascadeClassifier;\r\npublic class FaceDetector\r\n{\r\n\u00a0\u00a0\u00a0 public static void main(String[] args)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CascadeClassifier faceDetector = new CascadeClassifier();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 faceDetector.load(\"haarcascade_frontalface_alt.xml\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mat image = Imgcodecs.imread(\"E:\\\\input.jpg\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MatOfRect faceDetections = new MatOfRect();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 faceDetector.detectMultiScale(image, faceDetections);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for (Rect rect : faceDetections.toArray())\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Imgproc.rectangle(image, new Point(rect.x, rect.y),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 new Point(rect.x + rect.width, rect.y + rect.height),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 new Scalar(0, 255, 0));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String filename = \"Ouput.jpg\";\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Imgcodecs.imwrite(\"E:\\\\\"+filename, image);\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/install-java\/\">Related Topic &#8211; How to Install Java on Windows &amp; Linux\u00a0<\/a><\/strong><\/p>\n<h3>Watermarking a Java Image<\/h3>\n<p>In this Part of Java Image Processing, we will create a watermark and apply it to an info pictures.<\/p>\n<p>For creating content and applying it to a picture we will utilize java.awt.Graphics Bundle. Textual style and shade of content is connected by utilizing java.awt.Color and java.awt.Font classes.<\/p>\n<p>The techniques utilized as a part of the code:<\/p>\n<ul>\n<li>getGraphics() \u2013 This technique is found in BufferedImage class, and it restores a 2DGraphics protest out of picture record.<\/li>\n<li>drawImage(Image img, int x, int y, ImageObserver onlooker) \u2013 The x,y area indicates the situation for the upper left of the picture. The eyewitness parameter advises the utilization of updates to a picture that is stacked concurrently. The onlooker parameter isn&#8217;t as often as possible utilized specifically and isn&#8217;t required for the BufferedImage class, so it more often than not is invalid.<\/li>\n<li>setFont(Font f) \u2013 This technique is found in Font class of awt bundle and the constructor takes (FONT_TYPE, FONT_STYLE, FONT_SIZE) as contentions.<\/li>\n<li>setColor(Color c) \u2013 This strategy is found in Color class of awt bundle and the constructor takes (R, G, B, An) as contentions.<\/li>\n<li>drawString(String str, int x, int y) \u2013 Fond in Graphics class takes the string content and the area coordinates as x and y as contentions.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/java-for-loop\/\"><strong>Let&#8217;s look at A Quick Guide with Java For Loop Example<\/strong><\/a><\/p>\n<p><strong>i. Implementation<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import java.awt.Color;\r\nimport java.awt.Font;\r\nimport java.awt.Graphics;\r\nimport java.awt.image.BufferedImage;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport javax.imageio.ImageIO;\r\npublic class WaterMark\r\n{\r\n\u00a0\u00a0\u00a0 public static void main(String[] args)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage img = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 File f = null;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"input.png\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img = ImageIO.read(f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch(IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedImage temp = new BufferedImage(img.getWidth(),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img.getHeight(), BufferedImage.TYPE_INT_RGB);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Graphics graphics = temp.getGraphics();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 graphics.drawImage(img, 0, 0, null);\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 graphics.setFont(new Font(\"Arial\", Font.PLAIN, 80));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 graphics.setColor(new Color(255, 0, 0, 40));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String watermark = \"WaterMark generated\";\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 graphics.drawString(watermark, img.getWidth()\/5,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 img.getHeight()\/3);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 graphics.dispose();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 f = new File(\"output.png\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ImageIO.write(temp, \"png\", f);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch (IOException e)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(e);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/java-generics\/\">Let&#8217;s Discuss Java Generics- Class, Functions of Generics in Java<\/a><\/strong><\/p>\n<h3>Changing Orientation of Image in Java<\/h3>\n<p>In this Java Image Processing, we will utilize opencv to change the introduction of any info picture, by utilizing the CORE.flip() strategy for OpenCV library.<\/p>\n<p>The primary thought is that an info orientation of picture will change over to a tangle protest and afterward another tangle protest will make in which the first tangle protest esteems are put after introduction alteration.<\/p>\n<p>For accomplishing the above outcome, we will require a portion of the OpenCV strategies:<\/p>\n<ul>\n<li><strong>getRaster() \u2013<\/strong> The strategy restores a writable raster which thus utilize to get the crude information from input picture.<\/li>\n<li><strong>put(int push, int section, byte[] information)\/get(int push, int segment, byte[] information) \u2013<\/strong> used to peruse\/compose the crude information into a tangle question.<\/li>\n<li><strong>flip(mat mat1, tangle mat2, int flip_value) \u2013<\/strong> mat1 and mat2 compares to info and yield tangle objects and the flip_value chooses the introduction type.flip_value can be either 0 (flipping along x-hub), 1 (flipping along y-hub), &#8211; 1 (flipping along both the hub).<\/li>\n<\/ul>\n<p><strong>i. Implementation<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import java.awt.image.BufferedImage;\r\nimport java.awt.image.DataBufferByte;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport javax.imageio.ImageIO;\r\nimport org.opencv.core.Core;\r\nimport org.opencv.core.CvType;\r\nimport org.opencv.core.Mat;\r\npublic class OrientingImage\r\n{\r\n\u00a0 public static void main( String[] args ) throws IOException\r\n\u00a0 {\u00a0\u00a0\r\n\u00a0\u00a0\u00a0 System.loadLibrary( Core.NATIVE_LIBRARY_NAME );\r\n\u00a0\u00a0\u00a0 File input = new File(\"E:\\\\test.jpg\");\r\n\u00a0\u00a0\u00a0 BufferedImage image = ImageIO.read(input);\r\n\u00a0\u00a0\u00a0 byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();\r\n\u00a0\u00a0\u00a0 Mat mat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);\r\n\u00a0\u00a0\u00a0 mat.put(0, 0, data);\r\n\u00a0\u00a0\u00a0 Mat newMat = new Mat(image.getHeight(),image.getWidth(),CvType.CV_8UC3);\r\n\u00a0\u00a0\u00a0 Core.flip(mat, newMat, -1);\u00a0 \/\/flipping the image about both axis\u00a0\u00a0\r\n \u00a0\u00a0 byte[] newData = new byte[newMat.rows()*newMat.cols()*(int)(newMat.elemSize())];\r\n\u00a0\u00a0\u00a0 newMat.get(0, 0, newData);\r\n\u00a0\u00a0\u00a0 BufferedImage image1 = new BufferedImage(newMat.cols(), newMat.rows(), 5);\r\n\u00a0\u00a0\u00a0 image1.getRaster().setDataElements(0,0,newMat.cols(),newMat.rows(),newData);\r\n\u00a0\u00a0\u00a0 File ouptut = new File(\"E:\\\\result.jpg\");\r\n\u00a0\u00a0\u00a0 ImageIO.write(image1, \"jpg\", ouptut);\r\n\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/java-regular-expression\/\">See Also &#8211; Java Regular Expression (Java Regex) with Examples<\/a><\/strong><\/p>\n<p>This was all about Java Image Processing Tutorial. Hope you like our explanation.<\/p>\n<h3>Conclusion<\/h3>\n<p>Hence, in this Java Image Processing Tutorial, we study what is Processing of Java image and it&#8217;s various variations like\u00a0Reading and Writing Java Images, Get and set Pixels, Creating a random pixel image, Creating mirror image,\u00a0Face Detection,\u00a0Watermarking an image, and\u00a0Changing orientation of an image. Furthermore, if you have any query feel free to ask in a comment section.<\/p>\n<p>Related Topic- <strong><a href=\"https:\/\/data-flair.training\/blogs\/features-of-java\/\">Features of Java Programming Language<\/a><\/strong><\/p>\n<p><strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_(programming_language)\">For reference<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The last article,\u00a0Java Image Processing is not over yet.\u00a0In the last article, we learned about what image processing is and how to convert a colored image using Java. Now let&#8217;s deep dive into the&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":13187,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[3119,3145,4520,5074,6082,6466,7539,7540,11355,15425],"class_list":["post-13169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-creating-a-random-pixel-image","tag-creating-mirror-image","tag-face-detection","tag-get-and-set-pixels","tag-how-to-create-mirror-image-in-java","tag-image-processing-in-java","tag-java-image","tag-java-image-processing","tag-read-and-write","tag-watermarking-an-image"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Learn Java Image Processing - Face Detection, Watermarking - DataFlair<\/title>\n<meta name=\"description\" content=\"Java Image Processing-What is Image processing in Java,Reading and Writing Images,Get &amp; set Pixels,Create random pixel image, mirror image,Face Detection\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/java-image-processing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Learn Java Image Processing - Face Detection, Watermarking - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Java Image Processing-What is Image processing in Java,Reading and Writing Images,Get &amp; set Pixels,Create random pixel image, mirror image,Face Detection\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/java-image-processing\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-11T12:04:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-30T09:58:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Learn Java Image Processing - Face Detection, Watermarking - DataFlair","description":"Java Image Processing-What is Image processing in Java,Reading and Writing Images,Get & set Pixels,Create random pixel image, mirror image,Face Detection","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/java-image-processing\/","og_locale":"en_US","og_type":"article","og_title":"Learn Java Image Processing - Face Detection, Watermarking - DataFlair","og_description":"Java Image Processing-What is Image processing in Java,Reading and Writing Images,Get & set Pixels,Create random pixel image, mirror image,Face Detection","og_url":"https:\/\/data-flair.training\/blogs\/java-image-processing\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-04-11T12:04:15+00:00","article_modified_time":"2026-05-30T09:58:29+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Learn Java Image Processing &#8211; Face Detection, Watermarking","datePublished":"2018-04-11T12:04:15+00:00","dateModified":"2026-05-30T09:58:29+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/"},"wordCount":1481,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg","keywords":["Creating a random pixel image","Creating mirror image","Face Detection","Get and set Pixels","How to create Mirror Image in Java","Image Processing in Java","Java Image","Java Image Processing","Read and Write","Watermarking an image"],"articleSection":["Java Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/java-image-processing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/","url":"https:\/\/data-flair.training\/blogs\/java-image-processing\/","name":"Learn Java Image Processing - Face Detection, Watermarking - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg","datePublished":"2018-04-11T12:04:15+00:00","dateModified":"2026-05-30T09:58:29+00:00","description":"Java Image Processing-What is Image processing in Java,Reading and Writing Images,Get & set Pixels,Create random pixel image, mirror image,Face Detection","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/java-image-processing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/04\/Java-Image-Processing-01.jpg","width":1200,"height":628,"caption":"Java Image Processing - A Complete Guide 2018"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/java-image-processing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Java Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/java\/"},{"@type":"ListItem","position":3,"name":"Learn Java Image Processing &#8211; Face Detection, Watermarking"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/13169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=13169"}],"version-history":[{"count":8,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/13169\/revisions"}],"predecessor-version":[{"id":148511,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/13169\/revisions\/148511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/13187"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=13169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=13169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=13169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}