If the rectangle you draw an image in is not proportional to the size of the image drawn, then the image may appear squashed or distorted.
To avoid disproportionate scaling you can use the
Image
's getHeight(ImageObserver observer)
and
getWidth(ImageObserver observer)
methods to determine
the actual size. Then scale appropriately. For instance this is how
you would draw an Image scaled by one quarter in each
dimension:
g.drawImage(img, 0, 0, img.getWidth(this)/4, img.getHeight(this)/4, this);
This applet reads an image file in the same directory as the
HTML file and displays it at a specified magnification. The name of
the image file and the magnification factor are specified via
PARAMs. For example here's an applet tag that displays the image at
half size:
This image was loaded with this
|
import java.awt.*;
import java.applet.Applet;
public class MagnifyImage extends Applet {
private Image picture;
private double scalefactor;
public void init() {
String filename=this.getParameter("imagefile");
if (filename != null) {
this.picture = this.getImage(getDocumentBase(), filename);
}
try {
scalefactor = Double.valueOf(
this.getParameter("scalefactor")).doubleValue();
}
catch (Exception e) {
this.scalefactor = 1.0;
}
}
public void paint (Graphics g) {
if (this.picture != null) {
int width = picture.getWidth(this);
int height = picture.getHeight(this);
int scaleWidth = (int) (width * scalefactor);
int scaleHeight = (int) (height * scalefactor);
g.drawImage(picture, 0, 0, scaleWidth, scaleHeight, this);
}
else {
g.drawString("Missing imagefile PARAM element in HTML page", 10, 10);
}
}
}