Re: Work around requested
On Dec 21, 7:09 pm, Knute Johnson <nos...@knutejohnson.com> wrote:
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/satur=
n.jpg");
image = ImageIO.read(url);
setPreferredSize(
new Dimension(image.getWidth(),image.getHeigh=
t()));
thumb1 = scaleImage(image,.25,.25,
AffineTransformOp.TYPE_BICUBIC);
thumb2 = scaleImage(image,.25,.25,hints);
// if the image needs to have the colorspace c=
onverted
// 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,.2=
5,.25,
AffineTransformOp.TYPE_BICUBI=
C);
thumb2 = scaleImage(image,.2=
5,.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, doub=
le sx,
double sy, int interpolationType) {
AffineTransformOp op = new AffineTransformOp(
AffineTransform.getScaleInstance(sx,sy),interpolation=
Type);
return op.filter(src,null);
}
public static BufferedImage scaleImage(BufferedImage src, doub=
le 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.getDefaultConfiguratio=
n();
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.DISP=
OSE_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
Hi Knute,
Thanks for your help. I have
experimented with your program and
find that the thumbnail images have no
noticeable distortion.
The first time I ran "test.java",
using your image from your URL
I thought the small planet drawings in the
upper corners were a part of the initial download
URL source. I should have read your "test.java"
more carefully.
However, when I replaced your URL, with my
localhost url, I then saw where the thumbnails
are placed.
Finally it was also clear in "test.java"
what you intended me to write from your earlier
help.
Thank you very much.
bH