Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: Knute Johnson Newsgroups: comp.lang.java.help Subject: Re: Work around requested Date: Wed, 21 Dec 2011 16:09:15 -0800 Organization: A noiseless patient Spider Lines: 154 Message-ID: References: <17844998.127.1324178380897.JavaMail.geo-discussion-forums@pril5> <4decc207-ebaa-4d1c-9952-b73f18817f08@k10g2000yqk.googlegroups.com> <1ba91a9f-d3e9-45df-8986-2de9165aeb93@q9g2000yqe.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 22 Dec 2011 00:09:17 +0000 (UTC) Injection-Info: mx04.eternal-september.org; posting-host="mz/LDSJwiWnk3Jnnqg7x+Q"; logging-data="29317"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+czyQwYu0siZZISxyOMoos" User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20111105 Thunderbird/8.0 In-Reply-To: Cancel-Lock: sha1:yZ4SqRgBUVXaraw89SkJPAxT1aY= Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.help:1467 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