title: Re-sizing an image without losing quality
body: <p>I made this code to resize images with two factors. It works, but the quality of image is very bad after it is resized! Can you help me?</p>
  
  <p>This is the code</p>
  
  <pre><code>public class ImageTest {
  
  private static final int factor1 = 3;
  private static final int factor2 = 4;
  public static void main(String [] args){
  
      JFileChooser cs = new JFileChooser();
      cs.setFileSelectionMode(cs.DIRECTORIES_ONLY);
      int i = cs.showOpenDialog(null);
      if(i==cs.APPROVE_OPTION){
          File f = cs.getSelectedFile();
          File[] ff = f.listFiles();
          for(int j=0;j&lt;ff.length;j++){
              String end = ff[j].getName().substring(ff[j].getName().indexOf(".")+1);
              System.out.println(end);
              try{
                  BufferedImage originalImage = ImageIO.read(ff[j]);
                  int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
                  BufferedImage resizeImageJpg = resizeImageWithHint(originalImage, type);
                  ImageIO.write(resizeImageJpg, end, new File("pr/"+ff[j].getName()));
              }catch(IOException e){
                  e.printStackTrace();
              }
          }
      }
  
  
  }
  private static BufferedImage resizeImageWithHint(BufferedImage originalImage, int type){
      int IMG_WIDTH = (originalImage.getWidth()*factor1)/factor2;
      int IMG_HEIGHT = (originalImage.getHeight()*factor1)/factor2;
      BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
      Graphics2D g = resizedImage.createGraphics();
      g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
      g.dispose();    
      g.setComposite(AlphaComposite.Src);
  
      g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
              RenderingHints.VALUE_INTERPOLATION_BILINEAR);
      g.setRenderingHint(RenderingHints.KEY_RENDERING,
              RenderingHints.VALUE_RENDER_QUALITY);
      g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
              RenderingHints.VALUE_ANTIALIAS_ON);
  
      return resizedImage;
  }   
     }
  </code></pre>
  
  <p>I saw on web that resizeImageWithHint is done within the scope so as not to lose quality.. but it does! why? can you help me with this?</p>