On 12/21/2011 1:58 PM, bH wrote:
Hi Knute,
I am in need of further help as to how and
where to place what you wrote above.
I have tried various locations within my work.
Nothing seems to help to make the resulting
thumbnail show any improvement.
TIA
bH
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.io.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;
public class test extends JPanel implements ActionListener {
private final JFrame frame;
private final RenderingHints hints;
private BufferedImage image,thumb1,thumb2;
public test(JFrame frame) {
this.frame = frame;
hints = new RenderingHints(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
hints.add(new RenderingHints(
RenderingHints.KEY_ALPHA_INTERPOLATION,
RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
hints.add(new RenderingHints(
RenderingHints.KEY_COLOR_RENDERING,
RenderingHints.VALUE_COLOR_RENDER_QUALITY));
try {
URL url =
new URL("http://rabbitbrush.frazmtn.com/saturn.jpg");
image = ImageIO.read(url);
setPreferredSize(
new Dimension(image.getWidth(),image.getHeight()));
thumb1 = scaleImage(image,.25,.25,
AffineTransformOp.TYPE_BICUBIC);
thumb2 = scaleImage(image,.25,.25,hints);
// if the image needs to have the colorspace converted
// image = convertToCompatible(image);
} catch (MalformedURLException murle) {
JOptionPane.showMessageDialog(this,murle);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(this,ioe);
}
}
public void actionPerformed(ActionEvent ae) {
String ac = ae.getActionCommand();
if (ac.equals("url")) {
String input =
JOptionPane.showInputDialog(this,"Enter Image URL");
if (!input.equals("")) {
try {
URL url = new URL(input);
image = ImageIO.read(url);
setPreferredSize(
new Dimension(image.getWidth(),image.getHeight()));
thumb1 = scaleImage(image,.25,.25,
AffineTransformOp.TYPE_BICUBIC);
thumb2 = scaleImage(image,.25,.25,hints);
setPreferredSize(new Dimension(image.getWidth(),
image.getHeight()));
frame.pack();
repaint();
} catch (MalformedURLException murle) {
JOptionPane.showMessageDialog(this,murle);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(this,ioe);
}
}
}
}
public void paintComponent(Graphics g) {
g.drawImage(image,0,0,null);
g.drawImage(thumb1,0,0,null);
g.drawImage(thumb2,getWidth()-thumb2.getWidth(),0,null);
}
public static BufferedImage scaleImage(BufferedImage src, double sx,
double sy, int interpolationType) {
AffineTransformOp op = new AffineTransformOp(
AffineTransform.getScaleInstance(sx,sy),interpolationType);
return op.filter(src,null);
}
public static BufferedImage scaleImage(BufferedImage src, double sx,
double sy, RenderingHints hints) {
AffineTransformOp op = new AffineTransformOp(
AffineTransform.getScaleInstance(sx,sy),hints);
return op.filter(src,null);
}
public static BufferedImage convertToCompatible(BufferedImage image) {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
BufferedImage compatible =
gc.createCompatibleImage(image.getWidth(),
image.getHeight());
if (compatible.getType() == image.getType())
return image;
ColorConvertOp op = new ColorConvertOp(
image.getColorModel().getColorSpace(),
compatible.getColorModel().getColorSpace(),null);
return op.filter(image,compatible);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
test t = new test(f);
JMenuBar mb = new JMenuBar();
f.setJMenuBar(mb);
JMenu file = new JMenu("file");
mb.add(file);
JMenuItem url = new JMenuItem("url");
url.addActionListener(t);
file.add(url);
f.add(t);
f.pack();
f.setVisible(true);
}
});
}
}
--
Knute Johnson
Thanks for your help. I have
noticeable distortion.
URL source. I should have read your "test.java"
more carefully.
are placed.
help.
Thank you very much.