⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exportimage.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.web.tasks.export.image;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import java.util.List;
import java.util.ArrayList;
import java.io.InputStream;
import java.net.URL;
import java.io.File;
import java.io.ByteArrayOutputStream;
import com.esri.adf.web.util.ADFDownloadServlet;
import com.esri.adf.web.data.WebNorthArrow;
import com.esri.adf.web.data.WebScaleBar;
import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.data.WebGraphics;
import com.esri.adf.web.util.WebUtil;
import com.esri.adf.web.faces.event.TaskEvent;
import java.text.DateFormat;
import java.util.Date;

/**
 * MVS-049: Export Image/Print Task support class. This utility class exports the current
 * map view to selected image format.
 */
public class ExportImage{
	private static Logger logger = LogManager.getLogger(ExportImage.class.getName());

	public ExportImage(){
	}

	public String exportImageToFile(TaskEvent event, String ext){
		List<byte[]> imageList = new ArrayList<byte[]>();
		try{
			WebMap webMap = event.getWebContext().getWebMap();
			byte[] map = webMap.getImageBytes();
			imageList.add(map);

			String dstr = DateFormat.getDateTimeInstance().format(new Date());
			String filename = dstr.replaceAll(" ", "_");
			if (ext.equalsIgnoreCase("PNG8")) ext = "PNG";
			
			//This line of code had to be changed when ported to 9.3 because the 
			//WebContext object did not support the .getId() method. If was replaced 
			//with .getName()
			//String dirname = "jitk_" + event.getWebContext().getId() + "_" + filename.replaceAll(":", "_");
			String dirname = "jitk_" + filename.replaceAll(":", "_");
			String fulldir = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + dirname;
			File fdir = new File(fulldir);
			fdir.mkdir();
			String fullpath = fulldir + System.getProperty("file.separator") + "ExportMapImage." + ext;
			ImageMerger imageMerge = new ImageMerger();

			WebScaleBar webScaleBar = new WebScaleBar();
			webScaleBar.init(event.getWebContext());
			 
			WebNorthArrow webNorthArrow = new WebNorthArrow();
			webNorthArrow.init(event.getWebContext());
			javax.servlet.ServletRequest request = (javax.servlet.ServletRequest)WebUtil.getExternalContext().getRequest();
			String urlpath = "";
			if (request.isSecure()) urlpath += "https://";
			else urlpath += "http://";
			urlpath += request.getServerName();
			urlpath += ":" + request.getServerPort();

			byte[] northArrow = null;
			try{
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				URL url = new URL(urlpath + "/" + webNorthArrow.getImageUrl());
				InputStream is = url.openStream();
				int r;
				byte[] buffer = new byte[8000];
				while ((r = is.read(buffer)) >= 0){
					if (r == 0) continue;
					baos.write(buffer, 0, r);
				}
				is.close();
				northArrow = baos.toByteArray();
			}catch(Exception e){
				logger.warn("Unable to get the north arrow image", e);
			}

			WebGraphics webGraphics = event.getWebContext().getWebGraphics();
			if (webGraphics.isEmpty()){
				if (northArrow != null) imageList.add(northArrow);
				imageMerge.mergeImages(imageList, fullpath, ext, webMap, webScaleBar);
			}
			else{
				byte[] data = webGraphics.exportGraphics();
				imageList.add(data);
				if (northArrow != null) imageList.add(northArrow);
				imageMerge.mergeImages(imageList, fullpath, ext, webMap, webScaleBar);
			}

			return dirname + "/ExportMapImage." + ext;
		} catch(Exception e) {
			logger.warn("Unable to export image to file", e);
		}
		
		return null;
	}
	
	@SuppressWarnings("unchecked")
	public String exportImage(TaskEvent event, String ext) {
		try {
			String filename = exportImageToFile(event, ext);
			String id = ADFDownloadServlet.generateId();
			WebUtil.getExternalContext().getSessionMap().put(id, filename);

			return id;
		} catch(Exception e) {
			logger.warn("Unable to export image", e);
		}
		
		return null;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -