{"id":87018,"date":"2023-03-03T11:48:51","date_gmt":"2023-03-03T06:18:51","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=87018"},"modified":"2026-06-03T15:00:50","modified_gmt":"2026-06-03T09:30:50","slug":"java-digital-watermarking","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/","title":{"rendered":"Java Digital Watermarking &#8211; Make Your Mark on the Digital World"},"content":{"rendered":"<p>In this project, we will be creating a project that allows you to add a watermark to an image using the Java Digital Watermarking . This project will have a user interface that allows you to select the image file and the watermark file, and then choose the position of the watermark on the image.<\/p>\n<h3>About Java Digital Watermarking<\/h3>\n<p>The objective of this project is to create a Java Digital Watermarking Project that can add a watermark to an image. The user will be able to select the image and watermark files, and choose the position of the watermark on the image.<\/p>\n<h3>Prerequisites Digital Watermarking using Java<\/h3>\n<p>You should have a basic understanding of the Java programming language and the Java Swing library for creating graphical user interfaces.<\/p>\n<h3>Download Java Digital Watermarking Project<\/h3>\n<p>Please download the source code of Java Digital Watermarking project from the following link: <a href=\"https:\/\/drive.google.com\/file\/d\/1ds0Z0D4Y5p4bdUgFCskWniR4GM_ue29k\/view?usp=drive_link\"><strong>Java Digital Watermarking Code<\/strong><\/a><\/p>\n<h3>Steps to Create Digital Watermarking using Java<\/h3>\n<p>Following are the steps for developing the Java Digital Watermarking project:<\/p>\n<h4>Step 1: Importing libraries<\/h4>\n<p>The first step in creating our project is to import the necessary libraries. The libraries that we will be using in this project are:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">package com.TechVidvan.watermarker;\r\nimport java.awt.AlphaComposite;\r\nimport java.awt.Graphics2D;\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\nimport java.awt.image.BufferedImage;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport javax.imageio.ImageIO;\r\nimport javax.swing.ButtonGroup;\r\nimport javax.swing.JButton;\r\nimport javax.swing.JFileChooser;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.JOptionPane;\r\nimport javax.swing.JPanel;\r\nimport javax.swing.JRadioButton;\r\nimport javax.swing.filechooser.FileNameExtensionFilter;\r\n<\/pre>\n<h4>Step 2: Creating the Watermarker class<\/h4>\n<p>The next step is to create the Watermarker class, which will be the main class of our project. This class will extend the JFrame class and will contain the user interface and the logic for adding the watermark to the image.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public class Watermarker extends JFrame {\r\n\r\n<\/pre>\n<h4>Step 3: Initializing the user interface<\/h4>\n<p>In this step, we will initialize the user interface of our project. This includes the buttons for opening the image and watermark files, the button for applying the watermark, and the radio buttons for selecting the position of the watermark on the image. We also initialize the JFileChooser to allow the user to select the image and watermark files. We also add labels to indicate the currently selected image and watermark files.<\/p>\n<ul>\n<li style=\"font-weight: 400;\">In the constructor of the Watermarker class, the user interface is initialized. This includes the buttons for opening the image and watermark files, the button for applying the watermark, and the radio buttons for selecting the position of the watermark on the image.<\/li>\n<li style=\"font-weight: 400;\">The JFileChooser is also initialized to allow the user to select the image and watermark files.<\/li>\n<li style=\"font-weight: 400;\">Labels are also added to indicate the currently selected image and watermark files.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">   private JButton openImageButton;\r\n    private JButton openWatermarkButton;\r\n    private JButton watermarkButton;\r\n    \r\n\/\/    Radio buttons to select the position of the watermark on the image\r\n    private JRadioButton topLeftRadioButton;\r\n    private JRadioButton topRightRadioButton;\r\n    private JRadioButton bottomLeftRadioButton;\r\n    private JRadioButton bottomRightRadioButton;\r\n    private JRadioButton centerRadioButton;\r\n    \r\n    private JFileChooser fileChooser;\r\n    private File sourceFile;\r\n    private File watermarkFile;\r\n    \r\n\/\/\tLabels to indicate the selected  filename \r\n    private JLabel imageLabel =new JLabel(\"No Image Selected\");\r\n    private JLabel watermarkLabel = new JLabel(\"No WaterMark selected\");\r\n\r\n    public Watermarker() {\r\n\/\/    \tUi Inititalization\r\n        setTitle(\"Image Watermarker\");\r\n        setSize(400, 300);\r\n        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n\r\n        JPanel panel = new JPanel();\r\n        getContentPane().add(panel);\r\n\r\n\/\/        initializing the action buttons\r\n        openImageButton = new JButton(\"Open Image File\");\r\n        panel.add(openImageButton);\r\n        panel.add(imageLabel);\r\n        imageLabel.setVisible(true);\r\n\r\n        openWatermarkButton = new JButton(\"Open Watermark File\");\r\n        panel.add(openWatermarkButton);\r\n        panel.add(watermarkLabel);\r\n        watermarkLabel.setVisible(true);\r\n        \r\n        watermarkButton = new JButton(\"Watermark\");\r\n        panel.add(watermarkButton);\r\n        \r\n\/\/        initializzing the radio buttons\r\n        ButtonGroup positionsButtonGroup = new ButtonGroup();\r\n        topLeftRadioButton = new JRadioButton(\"Top Left\");\r\n        topRightRadioButton = new JRadioButton(\"Top Rigth\");\r\n        bottomLeftRadioButton = new JRadioButton(\"Bottom Left\");\r\n        bottomRightRadioButton = new JRadioButton(\"Bottm Right\"); \r\n        centerRadioButton = new JRadioButton(\"Center\");\r\n        positionsButtonGroup.add(topLeftRadioButton);\r\n        positionsButtonGroup.add(topRightRadioButton);\r\n        positionsButtonGroup.add(bottomLeftRadioButton);        \r\n        positionsButtonGroup.add(bottomRightRadioButton);\r\n        positionsButtonGroup.add(centerRadioButton);\r\n        centerRadioButton.setSelected(true);\r\n        \r\n        \r\n        \r\n        panel.add(topLeftRadioButton);\r\n        panel.add(topRightRadioButton);\r\n        panel.add(bottomLeftRadioButton);        \r\n        panel.add(bottomRightRadioButton);\r\n        panel.add(centerRadioButton);\t\r\n        \r\n\/\/        Initializing and setting up the current directory for file chooser\r\n        fileChooser = new JFileChooser();\r\n        fileChooser.setCurrentDirectory(new File(System.getProperty(\"user.home\")));\r\n<\/pre>\n<p>We can also add a filter to the file chooser to only allow image files with specific extensions, such as .jpg, .png, .jpeg, etc.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/Setting up a filter to allow only image files\r\n       fileChooser.setAcceptAllFileFilterUsed(false);\r\n       String[] imageExtensionStrings = {\"png\",\"jpeg\",\"jpg\"};\r\n       fileChooser.addChoosableFileFilter(new FileNameExtensionFilter(\"Only Image files are valid\",imageExtensionStrings ));\r\n<\/pre>\n<h4>Step 4: Setting up the action listeners<\/h4>\n<p>In this step, we will set up the action listeners for the buttons and radio buttons in our user interface. This includes the open image and watermark buttons, the watermark button, and the radio buttons for selecting the position of the watermark on the image.<\/p>\n<ul>\n<li style=\"font-weight: 400;\">In the constructor of the Watermarker class, action listeners are set up for the buttons and radio buttons.<\/li>\n<li style=\"font-weight: 400;\">The openImageButton and openWatermarkButton have an action listener that opens the file chooser and sets the sourceFile and watermarkFile variables accordingly.<\/li>\n<li style=\"font-weight: 400;\">The watermarkButton has an action listener that gathers the necessary information (i.e the position of the watermark and the source and watermark files)<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/setting up the open Image button action\r\n        openImageButton.addActionListener(new ActionListener() {\r\n            public void actionPerformed(ActionEvent e) {\r\n                int result = fileChooser.showOpenDialog(Watermarker.this);\r\n                if (result == JFileChooser.APPROVE_OPTION) {\r\n                    sourceFile = fileChooser.getSelectedFile();\r\n                    imageLabel.setText(sourceFile.getName());\r\n                }\r\n            }\r\n        });\r\n\/\/        setting up the open Watermark button action\r\n        openWatermarkButton.addActionListener(new ActionListener() {\r\n            public void actionPerformed(ActionEvent e) {\r\n                int result = fileChooser.showOpenDialog(Watermarker.this);\r\n                if (result == JFileChooser.APPROVE_OPTION) {\r\n                    watermarkFile = fileChooser.getSelectedFile();\r\n                    watermarkLabel.setText(watermarkFile.getName());\r\n                }\r\n            }\r\n        });<\/pre>\n<h4>Step 5: Setting up the watermarking button action and watermarking logic<\/h4>\n<p>In this step, we will write the logic for adding the watermark to the image. This includes reading the image and watermark files, creating a new image with the watermark, and saving the new image to a file.<\/p>\n<ul>\n<li style=\"font-weight: 400;\">In this step, we will write the logic for adding the watermark to the image.<\/li>\n<li style=\"font-weight: 400;\">The first step is to read the image and watermark files using the ImageIO.read() method. This method reads an image file and returns a BufferedImage object.<\/li>\n<li style=\"font-weight: 400;\">Next, we create a new BufferedImage object with the same size as the original image and set the graphics context to it.<\/li>\n<li style=\"font-weight: 400;\">Then, we draw the original image on the new BufferedImage object.<\/li>\n<li style=\"font-weight: 400;\">Next, we set the composite of the graphics context to the AlphaComposite.SrcOver. This is used for transparency and overlay operations.<\/li>\n<li style=\"font-weight: 400;\">Then, we draw the watermark image on the new BufferedImage object using the chosen position and the graphics context.<\/li>\n<li style=\"font-weight: 400;\">Next, we create a new File object to save the new image with watermark.<\/li>\n<li style=\"font-weight: 400;\">Finally, we use the ImageIO.write() method to write the new BufferedImage object to the file and save it.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ setting up the watermarking button action watermarking logic\r\n        watermarkButton.addActionListener(new ActionListener() {\r\n            public void actionPerformed(ActionEvent e) {\r\n                if (sourceFile != null &amp;&amp; watermarkFile != null) {\r\n                    try {\r\n                    \t\/\/Reading the source images\r\n                        BufferedImage sourceImage = ImageIO.read(sourceFile);\r\n                        BufferedImage watermarkImage = ImageIO.read(watermarkFile);\r\n\r\n                        \/\/ Create a new buffered image with a transparent alpha channel.\r\n                        BufferedImage watermarkedImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);\r\n\r\n                        \/\/ Draw the source image on the new image.\r\n                        Graphics2D g2d = watermarkedImage.createGraphics();\r\n                        g2d.drawImage(sourceImage, 0, 0, null);\r\n\r\n                        \/\/ Set the opacity to use for drawing the watermark image.\r\n                        AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);\r\n                        g2d.setComposite(alphaComposite);\r\n                        \r\n                        int watermarkX = (watermarkedImage.getWidth() - watermarkImage.getWidth()) \/ 2;\r\n                        int watermarkY = (watermarkedImage.getHeight() - watermarkImage.getHeight()) \/ 2;\r\n                        \r\n                        \/\/ Calculate the position of the watermark image.\r\n                        if(topLeftRadioButton.isSelected()) {\r\n                        \t watermarkX = 0;\r\n                             watermarkY = 0;\r\n                        }\r\n                        \r\n                        if(topRightRadioButton.isSelected()) {\r\n                       \t \twatermarkX = watermarkedImage.getWidth()-watermarkImage.getWidth();\r\n                            watermarkY = 0;\r\n                        }\r\n                        if(bottomLeftRadioButton.isSelected()) {\r\n                        \twatermarkX = 0;\r\n                        \twatermarkY = watermarkedImage.getHeight() - watermarkImage.getHeight();\r\n                        }\r\n                        \r\n                        if(bottomRightRadioButton.isSelected()) {\r\n                        \t watermarkX = watermarkedImage.getWidth() - watermarkImage.getWidth();\r\n                             watermarkY = watermarkedImage.getHeight() - watermarkImage.getHeight();\r\n                        }\r\n                        \r\n                        if(centerRadioButton.isSelected()) {\r\n                        \twatermarkX = (watermarkedImage.getWidth() - watermarkImage.getWidth()) \/ 2;\r\n                            watermarkY = (watermarkedImage.getHeight() - watermarkImage.getHeight()) \/ 2;\r\n                       }\r\n                    \r\n                         \r\n\r\n                        \/\/ Drawing the watermark image on the new image.\r\n                        g2d.drawImage(watermarkImage, watermarkX, watermarkY, null);\r\n                        g2d.dispose();\r\n                       \/\/showing the save dialog\r\n                        int returnVal = fileChooser.showSaveDialog(Watermarker.this);\r\n                        if (returnVal == JFileChooser.APPROVE_OPTION) {\r\n                            File file = fileChooser.getSelectedFile();\r\n                            \r\n                            \r\n                            try {\r\n\/\/                            \twriting the image to the disk\r\n                            \tImageIO.write(watermarkedImage, \"png\", file);\r\n\r\n                            \t JOptionPane.showMessageDialog(Watermarker.this, \"File Saved\", \"Success\",\r\n                                         JOptionPane.INFORMATION_MESSAGE);\r\n                            \t\r\n                            } catch (IOException ex) {\r\n                                JOptionPane.showMessageDialog(Watermarker.this, \"Error saving file\", \"Error\",\r\n                                        JOptionPane.ERROR_MESSAGE);\r\n                            }\r\n                        }\r\n                        } catch (IOException ex) {\r\n                        ex.printStackTrace();\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n<\/pre>\n<h4>Step 6: Creating the main method<\/h4>\n<p>The final step would be to add the main method and call the constructor of the Watermarker class to initialize the UI and make the app<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">public static void main(String[] args) {\r\n        Watermarker watermarker = new Watermarker();\r\n        watermarker.setVisible(true);\r\n    }\r\n\r\n<\/pre>\n<h3>Java Digital Watermarking Output<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-87170 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/01\/java-digital-watermarking-output.webp\" alt=\"java digital watermarking output\" width=\"402\" height=\"302\" \/><\/p>\n<h3>Summary<\/h3>\n<p>In conclusion, We have created a Java program that allows adding a watermark to an image. The Java Digital Watermarking program features a graphical user interface (GUI) that is created using Java&#8217;s built-in libraries such as javax.swing.<\/p>\n<p>The interface has buttons that we can use to open both the source image and the watermark image, and there are also radio buttons to choose the position of the watermark on the image. Once we have selected the images and the position of the watermark, we can press the &#8220;Watermark&#8221; button to apply the watermark and save the result.<\/p>\n<p>We use java.awt.AlphaComposite to apply the watermark as an overlay with adjustable transparency.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this project, we will be creating a project that allows you to add a watermark to an image using the Java Digital Watermarking . This project will have a user interface that allows&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":87182,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[183],"tags":[4877,4878,4879,4880,4881,4882,4830,4872,2756],"class_list":["post-87018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-digital-watermarker-project","tag-digital-watermarking-project","tag-java-basic-project","tag-java-digital-watermarker","tag-java-digital-watermarker-project","tag-java-digital-watermarking-project","tag-java-project","tag-java-project-for-practice","tag-java-projects-for-beginners"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Java Digital Watermarking - Make Your Mark on the Digital World - TechVidvan<\/title>\n<meta name=\"description\" content=\"Digital Watermarking allows us to add a watermark to an image using the Java and Java Swing library for creating graphical user interfaces.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Digital Watermarking - Make Your Mark on the Digital World - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Digital Watermarking allows us to add a watermark to an image using the Java and Java Swing library for creating graphical user interfaces.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-03T06:18:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T09:30:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp\" \/>\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\/webp\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java Digital Watermarking - Make Your Mark on the Digital World - TechVidvan","description":"Digital Watermarking allows us to add a watermark to an image using the Java and Java Swing library for creating graphical user interfaces.","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:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/","og_locale":"en_US","og_type":"article","og_title":"Java Digital Watermarking - Make Your Mark on the Digital World - TechVidvan","og_description":"Digital Watermarking allows us to add a watermark to an image using the Java and Java Swing library for creating graphical user interfaces.","og_url":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2023-03-03T06:18:51+00:00","article_modified_time":"2026-06-03T09:30:50+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp","type":"image\/webp"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Java Digital Watermarking &#8211; Make Your Mark on the Digital World","datePublished":"2023-03-03T06:18:51+00:00","dateModified":"2026-06-03T09:30:50+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/"},"wordCount":885,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp","keywords":["digital watermarker project","digital watermarking project","java basic project","java digital watermarker","java digital watermarker project","java digital watermarking project","java project","java project for practice","java projects for beginners"],"articleSection":["Java Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/","url":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/","name":"Java Digital Watermarking - Make Your Mark on the Digital World - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp","datePublished":"2023-03-03T06:18:51+00:00","dateModified":"2026-06-03T09:30:50+00:00","description":"Digital Watermarking allows us to add a watermark to an image using the Java and Java Swing library for creating graphical user interfaces.","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/java-project-digital-watermarking-1.webp","width":1200,"height":628,"caption":"java project digital watermarking"},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/java-digital-watermarking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Java Digital Watermarking &#8211; Make Your Mark on the Digital World"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=87018"}],"version-history":[{"count":2,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87018\/revisions"}],"predecessor-version":[{"id":448018,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87018\/revisions\/448018"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/87182"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=87018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=87018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=87018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}