Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Wednesday, April 18, 2012

Sub image from image using Java

import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Crop extends JFrame {


public static boolean hasAlpha(Image image1) {
    // If buffered image, the color model is readily available
    if (image1 instanceof BufferedImage) {
        BufferedImage bimage = (BufferedImage)image1;
        return bimage.getColorModel().hasAlpha();
    }

    // Use a pixel grabber to retrieve the image's color model;
    // grabbing a single pixel is usually sufficient
     PixelGrabber pg = new PixelGrabber(image1, 0, 0, 1, 1, false);
    try {
        pg.grabPixels();
    } catch (InterruptedException e) {
    }

    // Get the image's color model
    ColorModel cm = pg.getColorModel();
    return cm.hasAlpha();
}
  Image image;

  Insets insets;

  public Crop() {
    super();
    ImageIcon icon = new ImageIcon("/home/otc/Desktop/Images/NewCombineM.png");
    image = icon.getImage();
    System.out.println("11111:"+image.getWidth(null));
    System.out.println("22222:"+image.getHeight(null));
    image = createImage(new FilteredImageSource(image.getSource(),new CropImageFilter(13, 13, 143, 163)));
    image.flush();


    Iterator writers = ImageIO.getImageWritersByFormatName("png");
        ImageWriter writer = (ImageWriter) writers.next();
        if (writer == null) {
            throw new RuntimeException("PNG not supported?!");
        }
try{
        ImageOutputStream out = ImageIO.createImageOutputStream(
                                    new File("TestPNG.png"));
        writer.setOutput(out);
        writer.write(toBufferedImage(image));
        out.close(); // close flushes buffer
}catch(Exception e){}
  }
public static BufferedImage toBufferedImage(Image image) {
    if (image instanceof BufferedImage) {
        return (BufferedImage)image;
    }

    // This code ensures that all the pixels in the image are loaded
    image = new ImageIcon(image).getImage();

    // Determine if the image has transparent pixels; for this method's
    // implementation, see Determining If an Image Has Transparent Pixels
    boolean hasAlpha = hasAlpha(image);

    // Create a buffered image with a format that's compatible with the screen
    BufferedImage bimage = null;
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    try {
        // Determine the type of transparency of the new buffered image
        int transparency = Transparency.OPAQUE;
        if (hasAlpha) {
            transparency = Transparency.BITMASK;
        }

        // Create the buffered image
        GraphicsDevice gs = ge.getDefaultScreenDevice();
        GraphicsConfiguration gc = gs.getDefaultConfiguration();
        bimage = gc.createCompatibleImage(
            image.getWidth(null), image.getHeight(null), transparency);
    } catch (HeadlessException e) {
        // The system does not have a screen
    }

    if (bimage == null) {
        // Create a buffered image using the default color model
        int type = BufferedImage.TYPE_INT_RGB;
        if (hasAlpha) {
            type = BufferedImage.TYPE_INT_ARGB;
        }
        bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
    }

    // Copy image to buffered image
    Graphics g = bimage.createGraphics();

    // Paint the image onto the buffered image
    g.drawImage(image, 0, 0, null);
    g.dispose();

    return bimage;
}
  public void paint(Graphics g) {
    super.paint(g);
    if (insets == null) {
      insets = getInsets();
    }
    g.drawImage(image, insets.left, insets.top, this);
  }

  public static void main(String args[]) {
    JFrame f = new Crop();
    f.setSize(1500, 1500);
    f.show();
  }
}

Converting Numbers to Words using Java


class constNumtoLetter1
  {
      String[] unitdo ={"", " One", " Two", " Three", " Four", " Five",
         " Six", " Seven", " Eight", " Nine", " Ten", " Eleven", " Twelve",
         " Thirteen", " Fourteen", " Fifteen",  " Sixteen", " Seventeen",
         " Eighteen", " Nineteen"};
      String[] tens =  {"", "Ten", " Twenty", " Thirty", " Forty", " Fifty",
         " Sixty", " Seventy", " Eighty"," Ninety"};
      String[] digit = {"", " Hundred", " Thousand", " Lakh", " Crore"};
     int r;


      //Count the number of digits in the input number
      int numberCount(int num)
      {
          int cnt=0;

          while (num>0)
          {
            r = num%10;
            cnt++;
            num = num / 10;
          }

            return cnt;
      }


      //Function for Conversion of two digit

      String twonum(int numq)
      {
           int numr, nq;
           String ltr="";

           nq = numq / 10;
           numr = numq % 10;

           if (numq>19)
             {
           ltr=ltr+tens[nq]+unitdo[numr];
             }
           else
             {
           ltr = ltr+unitdo[numq];
             }

           return ltr;
      }

      //Function for Conversion of three digit

      String threenum(int numq)
      {
             int numr, nq;
             String ltr = "";

             nq = numq / 100;
             numr = numq % 100;

             if (numr == 0)
              {
              ltr = ltr + unitdo[nq]+digit[1];
               }
             else
              {
              ltr = ltr +unitdo[nq]+digit[1]+" and"+twonum(numr);
              }
             return ltr;

      }

}

 class constNumtoLetter

   {

      public static void main(String[] args) throws Exception
      {
          double value = 1234567.25;

          String finalVal = convertToWords(value);
        
        
          System.out.println("final value:"+finalVal);

      }
      public static String convertToWords(double num1)
      {

          int num = (int)num1;
          System.out.println("num:"+num);
          String finalVal = convertToWords(num)+" Rupees";
          System.out.println("iiiiiiiii:"+(""+num1).indexOf("."));
          String num4 = (""+num1).substring((""+num1).indexOf('.')+1,(""+num1).length());
          System.out.println("num4:"+num4);
          if(num4.length()==1)num4+="0";
          int num5 = Integer.parseInt(num4);
          if(num5==0)
          {
              System.out.println("zero");
              finalVal+= " Only";
          }
          else
          {
              System.out.println("non zero");
              finalVal += " and";
              finalVal += convertToWords(num5);
               finalVal+= " Paisa Only";
          }
          System.out.println("num3:"+num4);
          return finalVal;
      }
      public static String convertToWords(int num){

          //Defining variables q is quotient, r is remainder

          int len, q=0, r=0;
          String ltr = " ";
          String Str = "";
          constNumtoLetter1 n = new constNumtoLetter1();
          //Integer.parseInt(args[0]);

          if (num <= 0) System.out.println("Zero or Negative number not for conversion");

          while (num>0)
          {

             len = n.numberCount(num);

             //Take the length of the number and do letter conversion

             switch (len)

             {
                  case 8:
                          q=num/10000000;
                          r=num%10000000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[4];
                          num = r;
                          break;

                  case 7:
                  case 6:
                          q=num/100000;
                          r=num%100000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[3];
                          num = r;
                          break;

                  case 5:
                  case 4:

                           q=num/1000;
                           r=num%1000;
                           ltr = n.twonum(q);
                           Str= Str+ltr+n.digit[2];
                           num = r;
                           break;

                  case 3:


                            if (len == 3)
                                r = num;
                            ltr = n.threenum(r);
                            Str = Str + ltr;
                            num = 0;
                            break;

                  case 2:

                           ltr = n.twonum(num);
                           Str = Str + ltr;
                           num=0;
                           break;

                  case 1:
                           Str = Str + n.unitdo[num];
                           num=0;
                           break;
                  default:

                          num=0;
                          System.out.println("Exceeding Crore....No conversion");
                          System.exit(1);


              }
                          if (num==0)
                             Str+= "";
           //  return Str;
            }
             return Str;
         }

      }