abstractimageformatter.java
来自「OpenMap是一个基于JavaBeansTM的开发工具包。利用OpenMap你」· Java 代码 · 共 445 行 · 第 1/2 页
JAVA
445 行
Debug.output("AbstractImageFormatter can't get layers from map!");
}
map.removePropertyChangeListener(this);
layers = null;
}
return getImageBytes();
}
/**
* Return the applicable Graphics to use to paint the layers into.
* If the internal BufferedImage hasn't been created yet, or has
* been set to null, then a new buffered Image is created, set to
* the size specified by the height and width. The ImageGenerator
* extends MapBean. Remember to dispose of the graphics object
* when you are done with it. Uses the default
* BufferedImage.TYPE_INT_RGB colormodel.
*
* @param width pixel width of Graphics.
* @param height pixel height of Graphics.
* @return Graphics object to use.
* @see java.awt.image.BufferedImage
*/
public Graphics getGraphics(int width, int height) {
return getGraphics(width, height, BufferedImage.TYPE_INT_RGB);
}
/**
* Return the applicable Graphics to use to paint the layers into.
* If the internal BufferedImage hasn't been created yet, or has
* been set to null, then a new buffered Image is created, set to
* the size specified by the height and width. The ImageGenerator
* extends MapBean. Remember to dispose of the graphics object
* when you are done with it. Lets you select the image type.
*
* @param width pixel width of Graphics.
* @param height pixel height of Graphics.
* @param imageType image type - see BufferedImage
* @return java.awt.Graphics object to use.
* @see java.awt.image.BufferedImage
*/
public Graphics getGraphics(int width, int height, int imageType) {
bufferedImage = new BufferedImage(width, height, imageType);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Graphics g = ge.createGraphics(bufferedImage);
g.setClip(0, 0, width, height);
return g;
}
/**
* Return the BufferedImage contained within the formatter.
*
* @return the BufferedImage.
*/
public BufferedImage getBufferedImage() {
return bufferedImage;
}
/**
* Return the BufferedImage contained within the formatter.
*
* @param bi the BufferedImage to use in this formatter.
*/
public void setBufferedImage(BufferedImage bi) {
bufferedImage = bi;
}
/**
* Scale the internal BufferedImage to the pixel dimensions, and
* then return it.
*
* @param scaledWidth the desired pixel width of the image.
* @param scaledHeight the desired pixel height of the image.
* @return the scaled BufferedImage.
*/
public BufferedImage getScaledBufferedImage(int scaledWidth,
int scaledHeight) {
if (bufferedImage == null) {
return null;
}
if (Debug.debugging("formatter")) {
Debug.output("Formatter: scaling image to : " + scaledWidth + ", "
+ scaledHeight);
}
java.awt.Image image = ImageScaler.getOptimalScalingImage(bufferedImage, scaledWidth,
scaledHeight);
if (Debug.debugging("formatter")) {
Debug.output("Formatter: creating scaled image...");
}
try {
BufferedImage buffi = BufferedImageHelper.getBufferedImage(image,
0,
0,
-1,
-1);
// Do this here, in case something bad happens in the
// buffered image creation, so at least the original image
// is retained.
bufferedImage = buffi;
} catch (InterruptedException ie) {
Debug.error("Formatter: Something bad happened during scaling! \n"
+ ie);
}
if (Debug.debugging("formatter")) {
Debug.output("Formatter: image successfully scaled");
}
return bufferedImage;
}
/**
* Return the image bytes of the formatted image.
*
* @return byte[] representing the image.
*/
public byte[] getImageBytes() {
BufferedImage bi = getBufferedImage();
if (bi == null) {
return new byte[0];
} else {
Debug.message("formatter",
"Formatter: creating formatted image bytes...");
return formatImage(bi);
}
}
/**
* Scale the internal BufferedImage, then return the image bytes
* of the formatted image.
*
* @param scaledWidth the desired pixel width of the image.
* @param scaledHeight the desired pixel height of the image.
* @return byte[] representing the image.
*/
public byte[] getScaledImageBytes(int scaledWidth, int scaledHeight) {
BufferedImage bi = getScaledBufferedImage(scaledWidth, scaledHeight);
if (bi == null) {
return new byte[0];
} else {
Debug.message("formatter",
"Formatter: creating formatted image bytes...");
return formatImage(bi);
}
}
/**
* Set the layers and image type in the properties.
*/
public void setProperties(Properties props) {
setProperties((String) null, props);
}
/**
* Part of the PropertyConsumer interface. Doesn't do anything
* yet.
*/
public Properties getProperties(Properties props) {
if (props == null) {
props = new Properties();
}
return props;
}
/**
* Part of the PropertyConsumer interface.
*/
public Properties getPropertyInfo(Properties list) {
if (list == null) {
list = new Properties();
}
return list;
}
/**
* Part of the PropertyConsumer interface. Set the Properties
* prefix to use to scope the relevant properties passed into the
* setProperties method.
*/
public void setPropertyPrefix(String prefix) {
propertiesPrefix = prefix;
}
/**
* Part of the PropertyConsumer interface. Get the Properties
* prefix used to scope the relevant properties passed into the
* setProperties method.
*/
public String getPropertyPrefix() {
return propertiesPrefix;
}
/**
* Used when the layers from the MapBean are needed, in order to
* use the renderDataForProjection method.
*/
protected Layer[] layers = null;
/**
* Used when the layers from the MapBean are needed, in order to
* use the renderDataForProjection method. Sets the Layer[] by
* adding the formatter as a PropertyChangeListener to the
* MapBean. Remember to remove the formatter from the MapBean as a
* PropertyChangeListener.
*/
public void propertyChange(PropertyChangeEvent pce) {
String propName = pce.getPropertyName();
if (propName == MapBean.LayersProperty) {
layers = (Layer[]) pce.getNewValue();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?