On Dec 20, 8:13 pm, "John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <
4decc207-ebaa-4d1c-9952-b73f18817...@k10g2000yqk.googlegroups.com>,
>
>
>
>
>
> bH <
bherbs...@hotmail.com> wrote:
> > I compared the output using one large image
> > 1600 x 1200 pixels cropped to 200 x 150 in both
> > programs, first program uses:
> > com.sun.image.codec.jpeg.JPEGCodec
> > and the second program with the revision as suggested
> > above by John Matthews:
> > uses the classes javax.imageio.ImageIO and
> > java.awt.image.AffineTransformOp.
>
> > The comparison result is that the suggested
> > revision by John Matthews comes in second place.
> > It does do crop it, but is less perfect of a
> > crop than the first method listed.
> > For instance in the second program,
> > the image is not as sharp and clear.
>
> Kudos for comparing. What interpolationType did you use?
>
> <
http://docs.oracle.com/javase/7/docs/api/java/awt/image/AffineTransfo...>- Hide quoted text -
>
> - Show quoted text -
John,
After you read my code,as usual
happens here, I'll have to take all criticism
that I deserve. I hope that I have limited my
line lengths to enable to fit it in.
Hi Knute,
I have combined your work dated 12-31-2005
found in this link:
< //
http://www.velocityreviews.com/forums/t148931-how-to-resize-a-jpg-
image-file.html >
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.imageio.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class DataScaleImageThmbNail extends JFrame
implements ActionListener {
private JButton dataTransferBtn =
new JButton("Make Thumbnail");
private JButton closeBtn = new JButton("Close");
private JPanel infoPanel = new JPanel();
JLabel NameOrNumberLabel =
new JLabel (" Enter Image Name or Number" );
JLabel ThmbNailWidth =
new JLabel (" Enter Width for Thumbnail" );
JLabel ThmbNailHeight =
new JLabel (" Enter Height for Thumbnail" );
JTextField namOrNum = new JTextField("EnterDataHere",10);
JTextField tfThumbNailWidth = new JTextField("200",10);
JTextField tfThumbNailHeight = new JTextField("150",10);
String alfaNumeric =" ";
String stringWidth = " ";
String stringHeight = " ";
DataScaleImageThmbNail() {
setTitle("ImgDataTest");
add(infoPanel,BorderLayout.CENTER);
JPanel infoPanel= new JPanel();
// TextArea for directions
infoPanel.add(new JTextArea(content));
// TextField for name of image
infoPanel.add(NameOrNumberLabel );
namOrNum = new JTextField("12A", 12);
infoPanel.add( namOrNum );
dataTransferBtn.addActionListener(this);
// TextField for width of thumbnail
infoPanel.add(ThmbNailWidth);
infoPanel.add (tfThumbNailWidth);
dataTransferBtn.addActionListener(this);
// TextField for height of thumbnail
infoPanel.add(ThmbNailHeight);
infoPanel.add (tfThumbNailHeight);
dataTransferBtn.addActionListener(this);
dataTransferBtn.addActionListener(this);
infoPanel.add(dataTransferBtn );
infoPanel.add(closeBtn);
closeBtn.addActionListener(this);
Container contentPane= getContentPane();
contentPane.add(infoPanel);
setSize(350,350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
static String content =
"Please place 2 folders on the desktop. \n"
+ " Name one 'LargeImageFolder' to put your large .jpg into it.
\n"
+ " then the second folder name it 'ThmnailFolder'. \n"
+ " Caution, each .jpg should have a unique 'name' \n"
+ " as examples '031', 'Bob2. \n"
+ " Make only one thumbnail at a time. \n"
+ " For each one, click the 'Make Thumbnail' button. \n"
+ " The .jpg thumbnails have the same name\n"
+ " as the original .jpg \n"
+ " You will find them in 'ThmnailFolder' \n"
+ " A 'Close' button is provided to close the program.";
public void actionPerformed(ActionEvent e) {
if(e.getSource() == dataTransferBtn){
alfaNumeric = namOrNum.getText();
//System.out.println(alfaNumeric);
stringWidth = tfThumbNailWidth.getText();
// System.out.println(stringWidth);
stringHeight = tfThumbNailHeight.getText();
// System.out.println(stringHeight );
ScaleImage2x (alfaNumeric, stringWidth, stringHeight ) ;
}
if(e.getSource() == closeBtn){
System.exit(0);
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
DataScaleImageThmbNail DataScaleImageThmbNail
= new DataScaleImageThmbNail ();
}
});
}
public void ScaleImage2x (String alnumeric,
String stringWidth,String stringHeight) {
String srcFile= "C:/Users/Bob/Desktop/LargeImageFolder/"
+ alnumeric+ ".jpg";
String destFile= "C:/Users/Bob/Desktop/ThmnailFolder/"
+ alnumeric+ ".jpg";
int destWidth = Integer.parseInt(stringWidth);
int destHeight = Integer.parseInt(stringHeight);
try {
BufferedImage src = ImageIO.read(new File(srcFile));
BufferedImage dest = new BufferedImage(destWidth,destHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = dest.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance(
(double)destWidth/src.getWidth(),
(double)destHeight/src.getHeight());
g.drawRenderedImage(src,at);
ImageIO.write(dest,"JPG",new File(destFile));
//at.close();
}
catch (Exception e)
{
e.printStackTrace( System.out ) ;
}
}
}
bH