Selection dans une image

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 054 fois - Téléchargée 14 fois

Contenu du snippet

Créer une Zone de sélection dans Une Image
--Ben Rached Marwen----
--Marwen Ben Rached ----
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Source / Exemple :


import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.*;
import javax.swing.event.*;
 
public class ImageSelection
{
    public static void main(String[] args)
    {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JScrollPane(new ImageSelectionPanel()));
        f.setSize(400,400);
        f.setLocation(200,200);
        f.setVisible(true);
    }
}
 
class ImageSelectionPanel extends JPanel
{
    BufferedImage image;
    Rectangle clip;
 
    public ImageSelectionPanel()
    {
        loadImage();
        clip = new Rectangle();
        setBackground(Color.black);
        Selector selector = new Selector(this);
        addMouseListener(selector);
        addMouseMotionListener(selector);
    }
 
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        int w = getWidth();
        int h = getHeight();
        int imageWidth = image.getWidth();
        int imageHeight = image.getHeight();
        int x = (w - imageWidth)/2;
        int y = (h - imageHeight)/2;
        AffineTransform at = AffineTransform.getTranslateInstance(x, y);
        g2.drawRenderedImage(image, at);
        g2.setPaint(Color.red);
        g2.draw(clip);
    }
 
    public void setClipFrame(Point start, Point end)
    {
        clip.setFrameFromDiagonal(start, end);
        repaint();
    }
 
    public Dimension getPreferredSize()
    {
        return new Dimension(image.getWidth(), image.getHeight());
    }
 
    private void loadImage()
    {
        String fileName = "images/owls.jpg";
        try
        {
            URL url = getClass().getResource(fileName);
            File file = new File(url.getFile());
            image = ImageIO.read(new FileImageInputStream(file));
        }
        catch(MalformedURLException mue)
        {
            System.out.println("url: " + mue.getMessage());
        }
        catch(IOException ioe)
        {
            System.out.println("read: " + ioe.getMessage());
        }
    }
}
 
class Selector extends MouseInputAdapter
{
    ImageSelectionPanel selectionPanel;
    Point start;
    boolean dragging, isClipSet;
 
    public Selector(ImageSelectionPanel isp)
    {
        selectionPanel = isp;
        dragging = false;
        isClipSet = false;
    }
 
    public void mousePressed(MouseEvent e)
    {
        if(isClipSet)             // clear existing clip
        {
            selectionPanel.setClipFrame(start, start);
            isClipSet = false;
        }
        else                      // or start new clip
        {
            start = e.getPoint();
            dragging = true;
            isClipSet = true;
        }
    }
 
    public void mouseReleased(MouseEvent e)
    {
        dragging = false;
    }
 
    public void mouseDragged(MouseEvent e)
    {
        if(dragging)
            selectionPanel.setClipFrame(start, e.getPoint());
    }
    
    }

Conclusion :


Marwen Ben Rached

A voir également

Ajouter un commentaire

Commentaire

Messages postés
2
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
15 février 2012

ce code n execute pa; il n'indique aucune erreur mais dans la methode void loadImage()il ya un probleme de chargement de image pourquoi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.