public static BufferedImage zoom(BufferedImage image,float factorX,float factorY) {
AffineTransform transform=AffineTransform.getScaleInstance(factorX,factorY);
BufferedImageOp op=new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);
BufferedImage filteredImage=new BufferedImage(
(int)(image.getWidth()*factorX),
(int)(image.getHeight()*factorY),
image.getType());
op.filter(image, filteredImage);
return filteredImage;
}
AffineTransform transform=AffineTransform.getScaleInstance(factorX,factorY);
BufferedImageOp op=new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);
BufferedImage filteredImage=new BufferedImage(
(int)(image.getWidth()*factorX),
(int)(image.getHeight()*factorY),
image.getType());
op.filter(image, filteredImage);
return filteredImage;
}
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;import javax.swing.*;
import javax.swing.event.*;public class image extends JApplet
{ public String imageName = "abc.gif";
boolean isStandalone = false;
JSlider slid;
static ImageProcessingPanel panel;
BufferedImage image,changedImage; public static void main(String[] args) {
image applet = new image();
applet.imageName = "c:/abc.jpg";
applet.isStandalone = true;
JFrame frame = new JFrame();
//EXIT_ON_CLOSE == 3
frame.setDefaultCloseOperation(3);
frame.setTitle("Applet Frame");
frame.getContentPane().add(applet, BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(400,320);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
Object P = "";
boolean isIn = false; public void processZoom(ChangeEvent e) {
if(isIn)
return;
synchronized(P) {
isIn = true;
JSlider sld = (JSlider)e.getSource();
float factor = (float)sld.getValue();
if(factor < 0) {
factor = -1/factor;
}else if(factor == 0)
factor = 1;
System.out.println(""+factor);
float fX = factor;
float fY = factor;
if(isHorizonFixed)fX=1.0f;
if(isVertFixed)fY=1.0f;
changedImage = zoom(image,fX,fY);
panel.redraw(changedImage);
isIn = false;
}
}
boolean isHorizonFixed=false;
boolean isVertFixed = false; public static BufferedImage zoom(BufferedImage image,float factorX,float factorY) {
AffineTransform transform=AffineTransform.getScaleInstance(factorX,factorY);
BufferedImageOp op=new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);
BufferedImage filteredImage=new BufferedImage(
(int)(image.getWidth()*factorX),
(int)(image.getHeight()*factorY),
image.getType());
op.filter(image, filteredImage);
return filteredImage;
}
private void pp(ChangeEvent e) {
isHorizonFixed = boxH.isSelected();
isVertFixed = boxV.isSelected();
System.out.println("Ho:"+isHorizonFixed+" Ve:"+isVertFixed);
}
JCheckBox boxH = new JCheckBox("Hori");
JCheckBox boxV = new JCheckBox("Vert");
public void init()
{
Container contentPane=getContentPane();
panel=new ImageProcessingPanel();
contentPane.add(panel,"Center");
JSlider slid = new JSlider(JSlider.HORIZONTAL,-10,3,0);
slid.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
processZoom(e);
}
});
JPanel pnlControl = new JPanel();
contentPane.add(pnlControl,"South");
pnlControl.add(slid);
boxH.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
pp(e);
}});
boxV.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
pp(e);
}});
pnlControl.add(boxH);
pnlControl.add(boxV);
// contentPane.add(boxV,"South");
try{
Image loadedImage;
if(isStandalone)
loadedImage= new ImageIcon(imageName).getImage();
else
loadedImage=getImage(getCodeBase(),imageName);
image=load(panel,loadedImage);
panel.redraw(image);
//init()
}catch(Exception e){e.printStackTrace();}
}
static MediaTracker tracker;
public static BufferedImage load(Component panel, Image loadedImage){
tracker=new MediaTracker(panel);
tracker.addImage(loadedImage,0);
try{ tracker.waitForID(0);}
catch(InterruptedException e){} BufferedImage image=new BufferedImage(
loadedImage.getWidth(null),
loadedImage.getHeight(null),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2=image.createGraphics();
g2.drawImage(loadedImage,0,0,null);
g2.drawImage(loadedImage,100,100,null);
return image;
}}class ImageProcessingPanel extends JPanel
{
private BufferedImage image; public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (image!=null)
g.drawImage(image,5,5,null);
} public void redraw(BufferedImage image)
{
this.image=image;
repaint();
}}