Kendrick Lamar
Kendrick Lamar

Reputation: 961

Cropping an image using Java

How to crop images in Java? I currently have this class for image manipulation.

The main method with the run method:

public static void main(String[] args) {
    GameProject gp = new GameProject();
    gp.run();
}

public void run(){
    s = new Screen();

    try {
        DisplayMode dm = s.findFirstCompatibleMode(modes);
        s.setFullscreen(dm);
        Fonts f = new Fonts(); //Checks if certain fonts exsist, if not install them.
        Images i = new Images(); 

        try { 
            i.draw("H:\\Dropbox\\Dropbox\\GameProject\\src\\Resources\\brock.png", 200, 200);
            Thread.sleep(50000);
        } catch (Exception e) {}
    } finally {
        s.restoreScreen();
    }
}


Images class:

package Handlers;

import javax.swing.ImageIcon;
import java.awt.*;

/**
 *
 * @author Steven
 */
public class Images {

    /**
     * @param args the command line arguments
     */
    private Screen s;  

    public void draw(String name, int x, int y) {   //Draws the image
        s = new Screen();
        Graphics2D g = s.getGraphics();
        draws(g, name, x, y, getWidth(name), getHeight(name));
    }   

    public void drawA(String name, int x, int y){   //Draws the image, allows for a more advanced image manipulation 
        s = new Screen();
        Graphics2D g = s.getGraphics();
        draws(g, name, x, y, getWidth(name), getHeight(name));
    }       

    public void draws(Graphics g, String name, int x, int y, int w, int h) {    //Draws and updates the screen
        s = new Screen();
        g.drawImage(new ImageIcon(name).getImage(), x, y, w, h, null);
        s.update();
    }

    public int getWidth(String name) {  //Gets the image width
        return new ImageIcon(name).getIconWidth();
    }

    public int getHeight(String name) { //Gets the images height
        return new ImageIcon(name).getIconHeight();
    }

}


Any help would be appreciated.

Upvotes: 1

Views: 4618

Answers (2)

JDGuide
JDGuide

Reputation: 6525

I have used this in my own project :-

public boolean CropImage(int cropHeight,int cropWidth,int windowLeft,int windowTop,File srcFile,String destDirectory,String destFilename,int commonPadding,String fileFormat,HttpServletRequest request)throws IOException{
        boolean isOkResolution=false;
        try {
            String dirPath=request.getRealPath("")+"/"+destDirectory;
            File f=new File(dirPath);
            if(!f.isDirectory()){
                f.mkdir();
            }
            String destpath=dirPath+"/"+destFilename;
            File outputFile=new File(destpath);
            FileInputStream fis=new FileInputStream(srcFile);
            BufferedImage bimage=ImageIO.read(fis);
            System.out.println("Image Origilnal Height=="+bimage.getHeight());
            BufferedImage oneimg=new BufferedImage(cropHeight,cropWidth,bimage.getType());
            Graphics2D gr2d=oneimg.createGraphics();
            isOkResolution=gr2d.drawImage(bimage,0,0,cropWidth,cropHeight,windowLeft-commonPadding,windowTop-commonPadding,(windowLeft+cropWidth)-commonPadding,(windowTop+cropHeight)-commonPadding,null);
            gr2d.dispose();
            ImageIO.write(oneimg,fileFormat,outputFile);
        } catch (FileNotFoundException fe) {
            System.out.println("No File Found =="+fe);
        } catch(Exception ex){
            System.out.println("Error in Croping File="+ex);
            ex.printStackTrace();
        }
        return isOkResolution;
    }

This method will help you to crop the image.Its working fine for my project.Hope it will help you out.

Upvotes: 1

Pradeep Pati
Pradeep Pati

Reputation: 5919

You can use CropImageFilter to crop images. Also, take a look at the java.awt.image package, it does have a lot of image manipulation routines.

Upvotes: 4

Related Questions