- DIP - Color Space Conversion
- DIP - GrayScale Conversion OpenCV
- DIP - Introduction To OpenCV
- DIP - Open Source Libraries
- DIP - Create Zooming Effect
- DIP - Weighted Average Filter
- DIP - Laplacian Operator
- DIP - Robinson Operator
- DIP - Kirsch Operator
- DIP - Sobel Operator
- DIP - Prewitt Operator
- DIP - Understanding Convolution
- DIP - Watermark
- DIP - Eroding & Dilation
- DIP - Box Filter
- DIP - Gaussian Filter
- DIP - Image Shape Conversions
- DIP - Basic Thresholding
- DIP - Image Pyramids
- DIP - Adding Image Border
- DIP - Image Compression Technique
- DIP - Enhancing Image Sharpness
- DIP - Enhancing Image Brightness
- DIP - Enhancing Image Contrast
- DIP - Grayscale Conversion
- DIP - Image Pixels
- DIP - Image Download & Upload
- DIP - Java BufferedImage Class
- DIP - Introduction
- DIP - Home
DIP Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Downloading & Uploading Images
In this chapter we are going to see how you can download an image from internet, perform some image processing techniques on the image, and then again upload the processed image to a server.
Downloading an Image
In order to download an image from a website, we use java class named URL, which can be found under java.net package. Its syntax is given below −
String website = "http://tutorialspoint.com"; URL url = new URL(website);
Apart from the above method, there are other methods available in class URL as described briefly −
Sr.No. | Method & Description |
---|---|
1 |
pubpc String getPath() It returns the path of the URL. |
2 |
pubpc String getQuery() It returns the query part of the URL. |
3 |
pubpc String getAuthority() It returns the authority of the URL. |
4 |
pubpc int getPort() It returns the port of the URL. |
5 |
pubpc int getDefaultPort() It returns the default port for the protocol of the URL. |
6 |
pubpc String getProtocol() It returns the protocol of the URL. |
7 |
pubpc String getHost() It returns the host of the URL. |
Example
The following example demonstrates the use of java URL class to download an image from the internet −
import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; pubpc class Download { pubpc static void main(String[] args) throws Exception { try{ String fileName = "digital_image_processing.jpg"; String website = "http://tutorialspoint.com/java_dip/images/"+fileName; System.out.println("Downloading File From: " + website); URL url = new URL(website); InputStream inputStream = url.openStream(); OutputStream outputStream = new FileOutputStream(fileName); byte[] buffer = new byte[2048]; int length = 0; while ((length = inputStream.read(buffer)) != -1) { System.out.println("Buffer Read of length: " + length); outputStream.write(buffer, 0, length); } inputStream.close(); outputStream.close(); } catch(Exception e) { System.out.println("Exception: " + e.getMessage()); } } }
Output
When you execute the given above, the following output is seen.
It would download the following image from the server.
Uploading an Image
Let us see how to upload an image to a webserver. We convert a BufferedImage to byte array in order to send it to server.
We use Java class ByteArrayOutputStream, which can be found under java.io package. Its syntax is given below −
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(image, "jpg", baos);
In order to convert the image to byte array, we use toByteArray() method of ByteArrayOutputStream class. Its syntax is given below −
byte[] bytes = baos.toByteArray();
Apart from the above method, there are other methods available in the ByteArrayOutputStream class as described briefly −
Sr.No. | Method & Description |
---|---|
1 |
pubpc void reset() This method resets the number of vapd bytes of the byte array output stream to zero, so that all the accumulated output in the stream is discarded. |
2 |
pubpc byte[] toByteArray() This method creates a newly allocated Byte array. Its size would be the current size of the output stream and the contents of the buffer will be copied into it. It returns the current contents of the output stream as a byte array. |
3 |
pubpc String toString() Converts the buffer content into a string. Translation will be done according to the default character encoding. It returns the String translated from the buffer s content. |
4 |
pubpc void write(int w) It writes the specified array to the output stream. |
5 |
pubpc void write(byte []b, int of, int len) It writes len number of bytes starting from offset off to the stream. |
6 |
pubpc void writeTo(OutputStream outSt) It writes the entire content of this Stream to the specified stream argument. |
Example
The following example demonstrates ByteArrayOutputStream to upload an image to the server −
Cpent Code
import javax.swing.*; import java.net.*; import java.awt.image.*; import javax.imageio.*; import java.io.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; pubpc class Cpent{ pubpc static void main(String args[]) throws Exception{ Socket soc; BufferedImage img = null; soc=new Socket("localhost",4000); System.out.println("Cpent is running. "); try { System.out.println("Reading image from disk. "); img = ImageIO.read(new File("digital_image_processing.jpg")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(img, "jpg", baos); baos.flush(); byte[] bytes = baos.toByteArray(); baos.close(); System.out.println("Sending image to server. "); OutputStream out = soc.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeInt(bytes.length); dos.write(bytes, 0, bytes.length); System.out.println("Image sent to server. "); dos.close(); out.close(); } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); soc.close(); } soc.close(); } }
Server Code
import java.net.*; import java.io.*; import java.awt.image.*; import javax.imageio.*; import javax.swing.*; class Server { pubpc static void main(String args[]) throws Exception{ ServerSocket server=null; Socket socket; server = new ServerSocket(4000); System.out.println("Server Waiting for image"); socket = server.accept(); System.out.println("Cpent connected."); InputStream in = socket.getInputStream(); DataInputStream dis = new DataInputStream(in); int len = dis.readInt(); System.out.println("Image Size: " + len/1024 + "KB"); byte[] data = new byte[len]; dis.readFully(data); dis.close(); in.close(); InputStream ian = new ByteArrayInputStream(data); BufferedImage bImage = ImageIO.read(ian); JFrame f = new JFrame("Server"); ImageIcon icon = new ImageIcon(bImage); JLabel l = new JLabel(); l.setIcon(icon); f.add(l); f.pack(); f.setVisible(true); } }
Output
Cpent Side Output
When you execute the cpent code, the following output appears on cpent side −
Server Side Output
When you execute the server code, the following ouptut appears on server side −
After receiving the image, the server displays the image as shown below −
Advertisements