struts2读取二进制图片并显示

struts.xml配置

<action name="activitiAction_*" class="activitiAction" method="{1}"></action>

action文件xxxAction.java:

/**
	 * 生成图片
	 * 
	 * @return
	 * @throws IOException
	 */
	public void generateDiagram() throws IOException
	{
		activitiService.generateDiagram("277501");//调用service实现类中的方法

	}

service实现类ActivitiService.java:

/**
	 * 生成图片
	 */
	@Override
	public void generateDiagram(String processInstanceId)
	{
	        //拿到response
		HttpServletResponse response = ServletActionContext.getResponse();

		response.setContentType("image/png");
		//拿到servlet的输出流
		ServletOutputStream out=null;
		try {
			out = response.getOutputStream();
		} catch (IOException e) {
		}
		//以下方法是为了拿到图片输入流
		ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		BpmnModel bm=repositoryService.getBpmnModel(pi.getProcessDefinitionId());

		List<String> activeIds=runtimeService.getActiveActivityIds(pi.getId());
		DefaultProcessDiagramGenerator dpg = new DefaultProcessDiagramGenerator();
		InputStream is = dpg.generateDiagram(bm, "png", activeIds,
	                Collections.<String> emptyList(), processEngine
	                        .getProcessEngineConfiguration().getActivityFontName(),
	                        processEngine.getProcessEngineConfiguration().getLabelFontName(),
	                null, 1.0);

		//读取输入流
		byte[] bt = new byte[1024];
		int c;
		try {
			while ((c = is.read(bt)) != -1) {
				for (int i = 0; i < c; i++)
					out.write(bt[i]);
			}
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

浏览器访问方式:

http://localhost:8080/oa_learn/activitiAction_generateDiagram.action
时间: 2024-10-10 21:33:18

struts2读取二进制图片并显示的相关文章

数据库读取二进制图片显示到PictureBox中

1.已知路径,加载本地图片到Image中 Image img = Image.FromFile("路径"); 2.数据库中读取二进制图片 string strSql = "Select Top 1 ImageContent From TT_ImageFileSave)"; Byte[] byteImage = new Byte[0]; byteImage = (Byte[])(DbHelperSQL.GetSingle(strSql)); MemoryStream

如何读取二进制图片-.ashx一般处理程序 --1---(转载)

我看过了很多关于如何在页面中显示二进制图片的方式.都很好,可觉得其实用性不是很强.我介绍一种方式希望实用性能强一点.    利用“一般处理程序”.如果你实用的是vs2005你在添加新项中可以见到“一般处理程序”,它的后缀名为.ashx.它是什么?其实它和.aspx很类似.先问问.aspx是如何工作的?也许你知道,.aspx能处理来自外部传入的请求,然后它还能处理这个请求并生成一个html作为结果返回.这是典型的处理外部请求的方式..aspx就是专门为处理“典型”的请求而出现的.那么如果我们现在需

如何读取二进制图片-Gridview中显示二进制图片 --2--(转载)

上一次描述了如何读取一张图片.现在来讲讲更为实际的使用.在GridView中读取数据库中保存的图片信息.我讲采用vs2005 + sqlServer2000.访问有名的Northwind数据库中的Employee表.其中Employee表中的photo中保存了员工的信息(image类型).我要做的是讲每一个员工的信息都显示出来包括他们的图片信息.    注意:        1.photo中的信息是二进制的,其中有效的图片信息是从第78位开始的.所以当你想要转换图片信息的时候应该从第78位开始.

从数据库读取二进制图片,img标签显示图片

引自 http://www.w3dev.cn/article/20110214/asp-net-csharp-image-base64-change.aspx      <img src="@myPicc.ImageInfo" type="image/jpeg" /> 直接给src图片的二进制是不允许的,但是支持base64字符串形式,在后台转化二进制为base64string格式传给前台. data:images/gif;base64,"转化

java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)

Java代码: File filePic = new File(path+"1-ab1.png"); if(filePic.exists()){ FileInputStream is = new FileInputStream(filePic); int i = is.available(); // 得到文件大小 byte data[] = new byte[i]; is.read(data); // 读数据 is.close(); response.setContentType(&q

java 通过流的方式读取本地图片并显示在jsp 页面上

项目中Java代码如下: @RequestMapping("readImage") public void readImage(Model model, HttpServletRequest request, HttpServletResponse response) throws IOException{ String magazineId = request.getParameter("magazineId"); String sql = " SELE

关于数据库保存的二进制图片无法在colorbox插件中显示的解决办法

colorbox是非常优秀的图片显示插件,但最近想用它来显示保存在数据库中的二进制图片却发现问题,就是无法正确显示,显示出来的都是一些乱码字符,究竟问题出在那呢? 于是循例百度了一下,是有人也碰到这个问题,但没有提出解决方案呀!看来只能自己分析原因了... 首先说下我的开发环境:ASP.NET MVC+COLORBOX,那问题不是出在MVC就是COLORBOX上了. 1.MVC分析: 无论图片保存数据库还是保存在目录文件,都是无非转换为二进制流返回比浏览器,于是我试下用COLORBOX显示保存在

Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示

Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 并用delphi调用 的方法: 1.c#的webservice现实见 http://www.greensoftcode.net/techntxt/20127118441582992373 之前的文章. 2.在客户端用delphi显示 发现asp.net xml形式输出的图片是base64字符串形式.

C# 图片保存到数据库和从数据库读取图片并显示

图片保存到数据库的方法: public void imgToDB(string sql)        {   //参数sql中要求保存的imge变量名称为@images            //调用方法如:imgToDB("update UserPhoto set [email protected] where UserNo='" + temp + "'");            FileStream fs = File.OpenRead(t_photo.Te