6/15/2012

sending image object through socket in java classic example


easywayprogramming.com sending image object through socket in java classic example 

       Sending image through socket connection in java is not so difficult task. Many peoples found it difficult to do it. many times we need to send images through network socket from one computer to another computer. Now we are going to see how we can send image through socket in java. It is very interesting.

client side coding:
GreetingClient.java
import java.net.*;
import java.io.*;
import java.awt.*;
import javax.imageio.*;

public class GreetingClient
{
    Image newimg;
    BufferedImage bimg;
    byte[] bytes;

   public static void main(String [] args)
   {
      String serverName = "localhost";
      int port = 6066;
      try
      {
         System.out.println("Connecting to " + serverName
                             + " on port " + port);
         Socket client = new Socket(serverName, port);

         System.out.println("Just connected to "
                      + client.getRemoteSocketAddress());

        DataInputStream in=new DataInputStream(client.getInputStream());
        System.out.println(in.readUTF());
        System.out.println(in.readUTF());

         DataOutputStream out =
                       new DataOutputStream(client.getOutPutStream());

         out.writeUTF("Hello from "
                      + client.getLocalSocketAddress());
         out.writeUTF("client: hello to server")

         ImageIcon img1=new ImageIcon("Ashish.jpg");
         Image img = img1.getImage();
         Image newimg = img.getScaledInstance(100, 120,  java.awt.Image.SCALE_SMOOTH);
         ImageIcon newIcon = new ImageIcon(newimg);

         bimg = ImageIO.read(new File("D:\adi-siddhi\DSC02503.JPG"));

         ImageIO.write(bimg,"JPG",client.getOutputStream());
         System.out.println("Image sent!!!!");
         client.close();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

severside coding:
GreetingSever.java
import java.net.*;
import java.io.*;

public class GreetingServer extends Thread
{
       private ServerSocket serverSocket;
       Socket server;

       public GreetingServer(int port) throws IOException, SQLException, ClassNotFoundException, Exception
       {
          serverSocket = new ServerSocket(port);
          serverSocket.setSoTimeout(180000);
       }

       public void run()
       {
           while(true)
          {
               try
               {
                  server = serverSocket.accept();
                  DataInputStream din=new DataInputStream(server.getInputStream());
                  DataOutputStream dout=new DataOutputStream(server.getOutputStream());

                  dout.writeUTF("server: -i am greeting server");
                  dout.writeUTF("server:- hi! hello client");

                  System.out.println(din.readUTF());
                  System.out.println(din.readUTF());

                  BufferedImage img=ImageIO.read(ImageIO.createImageInputStream(socket.getInputStream()));

                  System.out.println("Image received!!!!");
                  //lblimg.setIcon(img);
              }
             catch(SocketTimeoutException st)
             {
                   System.out.println("Socket timed out!");
                  break;
             }
             catch(IOException e)
             {
                  e.printStackTrace();
                  break;
             }
             catch(Exception ex)
            {
                  System.out.println(ex);
            }
          }
       }
      
       public static void main(String [] args) throws IOException, SQLException, ClassNotFoundException, Exception
       {
              //int port = Integer.parseInt(args[0]);
              Thread t = new GreetingServer(6066);
              t.start();
       }
}

Run the program as it is. first run greetingserver. java,  then greetingclient.java.

http://easywayprogramming.com/Java/sending-image-object-through-socket-in-java-classic-example.aspx?code=6&lan=j 

Follow the important rules given in post

6/10/2012

drawing image through graphics in java

 easywayprogramming.com drawing image through graphics in java

we are going to see how we can draw a image into frame using graphics

print.java

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.awt.Color;

import javax.swing.JFrame;
import java.util.Properties;

public class print extends JFrame
{
      PrintCanvas my_canvas = new PrintCanvas();

      public print()
      {
        add("Center", my_canvas);
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Ashish Wagh");
        setVisible(true);
        String name = "Ashish Wagh";

        Properties properties = new Properties();
        PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(print.this, name, properties);
        if (pj != null)
        {
              my_canvas.printAll(pj.getGraphics());
              pj.end();
        }
      }

      public static void main(String args[])
      {
        print p= new print();
      }
}

class PrintCanvas extends Canvas
{
  public void paint(Graphics g)
  {
    Dimension size = getSize();
    int width = size.width;
    int height = size.height;
    int x1 = (int) (width * 0.1);
    int x2 = (int) (width * 0.9);
    int y1 = (int) (height * 0.1);
    int y2 = (int) (height * 0.9);

    g.setColor(Color.YELLOW);
    g.fillRect(x1, y1, x2 - x1, y2 - y1);
    g.setColor(Color.GREEN);
    g.drawRect(x1, y1, x2 - x1, y2 - y1);
    g.drawOval(x1, y1, x2 - x1, y2 - y1);
    g.setColor(Color.RED);
    g.drawLine(x1, y1, x2, y2);
    g.drawLine(x2, y1, x1, y2);
    g.setColor(Color.BLACK);
    String text = "Ashish!";
    text += text;
    text += text;
    g.drawString(text, x1, (int) ((y1 + y2) / 2));
    g.drawString("Ashish",(int)(width/2)-(width/20), (int)(y1+(y2/4)));
    g.drawString("Ashish",(int)(width/2)-(width/20), (int)(y1+((3*y2)/4)));

    Image img = new ImageIcon("Ashish_photo.JPG").getImage();    
    Image newimg = img.getScaledInstance(100, 120,  java.awt.Image.SCALE_SMOOTH); 
    ImageIcon newIcon = new ImageIcon(img);    
    g.drawImage(newIcon.getImage(), 250, 70, 100,120, null);
    g.dispose();
  }
}

        In above example we, create a image icon of photo and get image from that photo. Then we create new image from old image by using method getScaledInstance(new Width, new height, java.awt.Image.SCALE_SMOOTH);
        Then we create new image icon from new image, and get image from that ImageIcon.
       now using drawImage(image, position x, position y, new width, new height, null) method in graphics we can draw that image.

how to resize ImageIcon in java

 easywayprogramming.com how to resize imageicon in java

When we apply image icon to any component like button, label or panel, it not apply properly because of size of that image. We can resize that image icon in two ways. 

1. first way: 
Image img = myIcon2.getImage(); Image newimg = img.getScaledInstance(230310,  java.awt.Image.SCALE_SMOOTH);  
newIcon = new ImageIcon(newimg); 

2. second way: 

 Image img = myIcon2.getImage();  BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);  
newIcon = new ImageIcon(bi);