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();
  }
}

Image Magic on Linux Systems

Open PDF using JSP

<%
java.io.File f=new java.io.File(imagepath,file_name);

java.io.OutputStream outStream = response.getOutputStream();
response.setContentType( "application/pdf" );
  response.setContentLength((int)f.length());
         response.setHeader("Cache-Control", "max-age=60");
        byte[] buf = new byte[8192];
        java.io.FileInputStream inStream = new java.io.FileInputStream(f);
        int sizeRead = 0;
        while ((sizeRead = inStream.read(buf, 0, buf.length)) > 0) {

            outStream.write(buf, 0, sizeRead);
        }
        inStream.close();
        outStream.close();
%>


Save PDF using JSP

<%
java.io.File f=new java.io.File(imagepath,imagefile_name);
java.io.OutputStream outStream = response.getOutputStream();
response.setContentType( "application/pdf" );
  response.setContentLength((int)f.length());
         response.setHeader("Content-Disposition","attachment; filename=\"QR_Decoded_Actual_Document.pdf\"");
         response.setHeader("Cache-Control", "no-cache");
        byte[] buf = new byte[8192];
        java.io.FileInputStream inStream = new java.io.FileInputStream(f);
        int sizeRead = 0;
        while ((sizeRead = inStream.read(buf, 0, buf.length)) > 0) {

            outStream.write(buf, 0, sizeRead);
        }
        inStream.close();
        outStream.close();
%>

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;
         }

      }

Converting Numbers to Words using Javascript

<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function test_skill1()
{
  var junkVal1=document.getElementById('rupees').value;
  junkVal = Math.round(junkVal1);
  if(junkVal1.indexOf(".")>0)
  {
    var pre = junkVal1.substring(junkVal1.indexOf(".")+1,junkVal1.length);
  }
  else
  {
    var pre = "0";
  }
  if(pre.length==1)pre=pre+"0";
  if(pre==0)
  {
    var retValue = test_skill(junkVal);
    document.getElementById('container').innerHTML=retValue+' Rupees';
  }
  else{
    var retValue = test_skill(junkVal);
    var retValue1 = test_skill(pre);
    document.getElementById('container').innerHTML=retValue+' Rupees and '+retValue1+'Paisa Only';
  }   
}
function test_skill(junkVal) {
    var obStr=new String(junkVal);
    numReversed=obStr.split("");
    actnumber=numReversed.reverse();

    if(Number(junkVal) >=0){
        //do nothing
    }
    else{
        alert('wrong Number cannot be converted');
        return false;
    }
    if(Number(junkVal)==0){
        return 'Rupees Zero';
        return false;
    }
    if(actnumber.length>9){
        alert('Oops!!!! the Number is too big to covertes');
        return false;
    }

    var iWords=["Zero", " One", " Two", " Three", " Four", " Five", " Six", " Seven", " Eight", " Nine"];
    var ePlace=['Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
    var tensPlace=['dummy', ' Ten', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety' ];

    var iWordsLength=numReversed.length;
    var totalWords="";
    var inWords=new Array();
    var finalWord="";
    j=0;
    for(i=0; i<iWordsLength; i++){
        switch(i)
        {
        case 0:
            if(actnumber[i]==0 || actnumber[i+1]==1 ) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            inWords[j]=inWords[j]+' ';
            break;
        case 1:
            tens_complication();
            break;
        case 2:
            if(actnumber[i]==0) {
                inWords[j]='';
            }
            else if(actnumber[i-1]!=0 && actnumber[i-2]!=0) {
                inWords[j]=iWords[actnumber[i]]+' Hundred and';
            }
            else {
                inWords[j]=iWords[actnumber[i]]+' Hundred ';
            }
            break;
        case 3:
            if(actnumber[i]==0 || actnumber[i+1]==1) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            if(actnumber[i+1] != 0 || actnumber[i] > 0){
                inWords[j]=inWords[j]+" Thousand";
            }
            break;
        case 4:
            tens_complication();
            break;
        case 5:
            if(actnumber[i]==0 || actnumber[i+1]==1) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            if(actnumber[i+1] != 0 || actnumber[i] > 0){
                inWords[j]=inWords[j]+" Lakh";
            }
            break;
        case 6:
            tens_complication();
            break;
        case 7:
            if(actnumber[i]==0 || actnumber[i+1]==1 ){
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            inWords[j]=inWords[j]+" Crore";
            break;
        case 8:
            tens_complication();
            break;
        default:
            break;
        }
        j++;
    }

    function tens_complication() {
        if(actnumber[i]==0) {
            inWords[j]='';
        }
        else if(actnumber[i]==1) {
            inWords[j]=ePlace[actnumber[i-1]];
        }
        else {
            inWords[j]=tensPlace[actnumber[i]];
        }
    }
    inWords.reverse();
    for(i=0; i<inWords.length; i++) {
        finalWord+=inWords[i];
    }
    return finalWord;
}
</SCRIPT>
</head>
<body>
<form>
<input type="text" name="rupees" id="rupees" />
<input type="button" name="sr1" value="Click Here" onClick="test_skill1()"/>
    <div id="container"></div>
</form>
</body>
</html>

Hi frends!

Today I created a blog to share all the solutions for problems, which are facing while Java programming or server related or database related issues.

Here please share all your code snippets for some specific problem which you faced and tried a lot.
This will be helpful to all.

Please give a help to our colleagues.

Thanks in advance........Ramesh