//************************************************************* //Java applet //「ScaleFilterTest」 // //          作 成 者:ルート高菜    //          作成開始月:2007/2 //          最終更新月:2007/2 [TN102/J92] //************************************************************* import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; public class ScaleFilterTest extends JApplet implements ActionListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // Image image; ScaleFilterTestPanel panel; // JComboBox scaleWidthCombo,scaleHeightCombo; JButton changeButton,formatButton; // public void init(){ //元の画像は同じ一つのもの image=getImage(getDocumentBase(),"natu03.jpg"); // JPanel panel2=new JPanel(); panel2.add(new JLabel("倍率:横")); panel2.add(scaleWidthCombo=new JComboBox(new String[]{"1","0.3","0.5","0.8","1.5","2","3","5"})); panel2.add(new JLabel("X縦")); panel2.add(scaleHeightCombo=new JComboBox(new String[]{"1","0.3","0.5","0.8","1.5","2","3","5"})); panel2.add(changeButton=new JButton("試行")); panel2.add(formatButton=new JButton("元に戻す")); //コンテナ枠 Container cp=getContentPane(); cp.add(panel=new ScaleFilterTestPanel(image,image),BorderLayout.CENTER); cp.add(panel2,BorderLayout.SOUTH); // changeButton.addActionListener(this); formatButton.addActionListener(this); } // public void actionPerformed(ActionEvent e) { if(e.getSource()==changeButton){ // ImageFilter filter; ImageProducer producer; //縦横の倍率を取得 double scale; // try{ scale=Double.parseDouble((String)scaleWidthCombo.getSelectedItem()); }catch(NumberFormatException nfe){ scale=1; } int w=(int)(scale*image.getWidth(this)); // try{ scale=Double.parseDouble((String)scaleHeightCombo.getSelectedItem()); }catch(NumberFormatException nfe){ scale=1; } int h=(int)(scale*image.getHeight(this)); // //左側のReplicateScaleFilter画像(低品位) filter=new ReplicateScaleFilter(w,h); producer=new FilteredImageSource(image.getSource(),filter); panel.image1=createImage(producer); //右側のAreaAveragingScaleFilter画像(高品位) filter=new AreaAveragingScaleFilter(w,h); producer=new FilteredImageSource(image.getSource(),filter); panel.image2=createImage(producer); // repaint(); }else if(e.getSource()==formatButton){ // panel.setImage(image,image); // repaint(); } } }