Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #35010

Re: What do you think of my CropImage class

From Knute Johnson <nospam@rabbitbrush.frazmtn.com>
Newsgroups comp.lang.java.programmer
Subject Re: What do you think of my CropImage class
Date 2016-07-20 10:02 -0700
Organization A noiseless patient Spider
Message-ID <nmoark$mqi$1@dont-email.me> (permalink)
References <87twfk93vu.fsf@Equus.decebal.nl>

Show all headers | View raw


On 7/20/2016 00:15, Cecil Westerhof wrote:
 > I need to crop some images and decide to write a Java program for it.
 > At the moment it is very rudimentary, I plan to add some
 > functionalities and because I have very little experience with GUI
 > comments on how to implement the GUI better are welcome.
 >
 >
 > At the moment it is build with my camera's in mind and cropping for
 > InstaGram, but when it is seen as useful I will make it more generic.
 >
 >
 > I have a few problems, the most important are:
 > - After loading the first or a new image the first click makes the
 >   image disappear and painted again. Subsequent clicks do not have
 >   this problem.

We'd need to see the code

 > - The original photo can be rotated. How can I find this out and make
 >   the cropped image also rotated?

That's in the image meta data (I have no clue how to find it)

 > - How can I add comment to an image?

You want to draw on the image or add meta data?

 > - After saving the cropped image I want to display it also. What would
 >   be the best way to do this?

In another window maybe

 > Some of the functionalities I want to add (other ideas are welcome):
 > - Working with different sets of cropping.
 > - Possibility to resize. (Select an area of 2.160x2.160 and crop it to
 >   1.080x1.080).
 > - Working with a database.
 >

Here's a crop component that I wrote years ago, I don't think I ever 
used it for anything but I can't remember.

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;

public class CropComponent extends JPanel {
     BufferedImage bi,subImage;
     boolean mouseDown;
     int startX,startY;
     int endX,endY;
     int x,y,w,h;

     public CropComponent(BufferedImage bi) {
         this.bi = bi;
         setPreferredSize(new Dimension(bi.getWidth(),bi.getHeight()));
         addMouseListener(new MouseAdapter() {
             public void mousePressed(MouseEvent me) {
                 mouseDown = true;
                 startX = me.getX();
                 startY = me.getY();
             }
             public void mouseReleased(MouseEvent me) {
                 mouseDown = false;
                 subImage = CropComponent.this.bi.getSubimage(x,y,w+1,h+1);
                 Runnable r = new Runnable() {
                     public void run() {
                         try {
                             ImageIO.write(subImage,"JPEG",new 
File("crop.jpg"));
                         } catch (IOException ioe) {
                             ioe.printStackTrace();
                         }
                     }
                 };
                 new Thread(r).start();
                 x = y = w = h = 0;
                 repaint();
             }
         });
         addMouseMotionListener(new MouseMotionAdapter() {
             public void mouseDragged(MouseEvent me) {
                 endX = Math.max(0,me.getX());
                 endX =
                  Math.min(endX,CropComponent.this.bi.getWidth()-1);
                 endY = Math.max(0,me.getY());
                 endY =
                  Math.min(endY,CropComponent.this.bi.getHeight()-1);
                 if (startX < endX && startY < endY) {
                     x = startX;
                     y = startY;
                     w = endX-startX;
                     h = endY-startY;
                 } else if (startX > endX && startY > endY) {
                     x = endX;
                     y = endY;
                     w = startX-endX;
                     h = startY-endY;
                 } else if (startX < endX && startY > endY) {
                     x = startX;
                     y = endY;
                     w = endX-startX;
                     h = startY-endY;
                 } else if (startX > endX && startY < endY) {
                     x = endX;
                     y = startY;
                     w = startX-endX;
                     h = endY-startY;
                 }
                 repaint();
             }
         });
     }

     public void paintComponent(Graphics g2D) {
         Graphics2D g = (Graphics2D)g2D;
         g.drawImage(bi,0,0,null);
         if (mouseDown) {
             g.setStroke(new BasicStroke(1.0f,BasicStroke.CAP_SQUARE,
              BasicStroke.JOIN_ROUND,1.0f,new float[] {2.0f,3.0f},1.0f));
             g.setColor(Color.WHITE);
             g.drawRect(x,y,w,h);
         }
     }

     public static void main(final String[] args) {
         Runnable r = new Runnable() {
             public void run() {
                 BufferedImage bi = null;
                 try {
                     try {
                         bi = ImageIO.read(new URL(args[0]));
                     } catch (MalformedURLException murle) {
                         bi = ImageIO.read(new File(args[0]));
                     }
                     JFrame f = new JFrame();
                     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                     CropComponent cc = new CropComponent(bi);
                     JScrollPane sp = new JScrollPane(cc);
                     f.add(sp,BorderLayout.CENTER);
                     f.pack();
                     f.setVisible(true);
                 } catch (IOException ioe) {
                     ioe.printStackTrace();
                 }
             }
         };
         EventQueue.invokeLater(r);
     }
}



-- 

Knute Johnson


-- 

Knute Johnson

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-20 09:15 +0200
  Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-20 11:12 +0200
  Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-20 10:02 -0700
    Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-20 21:14 +0200
      Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-20 12:50 -0700
        Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 12:11 +0200
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 14:19 +0200
      Re: What do you think of my CropImage class Qu0ll <qu0ll64@gmail.com> - 2016-07-21 05:53 +1000
      Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-20 13:46 -0700
        Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-20 13:59 -0700
          Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-20 15:40 -0700
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 12:27 +0200
            Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 05:17 -0700
              Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 17:43 +0200
                Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 08:59 -0700
                Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 19:10 +0200
                Re: What do you think of my CropImage class Arne Vajhøj <arne@vajhoej.dk> - 2016-07-23 21:47 -0400
                Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-25 04:51 -0700
                Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-25 15:01 -0700
                Re: What do you think of my CropImage class Arne Vajhøj <arne@vajhoej.dk> - 2016-07-25 21:06 -0400
                Re: What do you think of my CropImage class Arne Vajhøj <arne@vajhoej.dk> - 2016-07-25 21:09 -0400
            Re: What do you think of my CropImage class Nigel Wade <nmw@local.domain> - 2016-07-21 15:44 +0100
              Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 17:46 +0200
        Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 12:25 +0200
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 14:16 +0200
    Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 12:05 +0200
      Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 13:23 +0200
      Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-21 07:58 -0700
        Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 11:13 -0400
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 18:12 +0200
        Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 17:49 +0200
  Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 11:58 +0200
    Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 09:35 -0400
      Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 09:03 -0700
        Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 12:39 -0400
      Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 18:07 +0200
        Re: What do you think of my CropImage class Nigel Wade <nmw@local.domain> - 2016-07-21 17:23 +0100
        Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 12:56 -0400
      Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 19:03 +0200
        Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 10:25 -0700
          Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 14:24 -0400
            Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 11:54 -0700
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 20:25 +0200
            Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 15:37 -0400
              Re: What do you think of my CropImage class Martin Gregorie <martin@address-in-sig.invalid> - 2016-07-21 21:30 +0000
              Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 23:52 +0200
                Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 20:35 -0400
                Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-22 04:21 +0200
                Re: What do you think of my CropImage class Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-07-21 22:44 -0400
                Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-22 10:27 +0200
                Re: What do you think of my CropImage class Martin Gregorie <martin@address-in-sig.invalid> - 2016-07-22 10:47 +0000
                Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-22 05:16 -0700
                Re: What do you think of my CropImage class Nigel Wade <nmw@local.domain> - 2016-07-22 15:10 +0100
                Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-22 07:47 -0700
                Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-22 10:21 -0700
    Re: What do you think of my CropImage class Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2016-07-21 08:30 -0700
      Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 18:19 +0200
        Re: What do you think of my CropImage class Eric Douglas <e.d.programmer@gmail.com> - 2016-07-21 10:18 -0700
          Re: What do you think of my CropImage class Cecil Westerhof <Cecil@decebal.nl> - 2016-07-21 20:12 +0200

csiph-web