`
tmj_159
  • 浏览: 701006 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

REST 图片流

 
阅读更多

写了个Spring rest 风格的 图片加载。

package cn.tang.demo.controller.image;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value = "/image/")
public class ImageCacheController {
	
		// for restful http://localhost:8888/rest/image/load?imageName=a.jpg
		@RequestMapping(value = "/load", method = RequestMethod.GET)
		public void imageLoad(@RequestParam(value = "imageName", required = true) String imageName, HttpServletRequest request, HttpServletResponse response)
				throws IOException {
			File f = new File("c://"+imageName);
			if (!f.exists()) {
				return;
			}
			FileInputStream fis = new FileInputStream(f);
			byte[] buffer = new byte[1024];
			int len =0;
			try {
				response.setHeader("Content-Type", "image/jpg;charset=UTF-8");
				ServletOutputStream outputStream = response.getOutputStream();
				
				while ((len=fis.read(buffer)) > 0) {
					outputStream.write(buffer, 0, len);
				}
				outputStream.flush();
				
			} finally {
				fis.close();
			}
			
		}

	// for restful http://localhost:8888/rest/image/a.jpg
	@RequestMapping(value = "/{name:\\S*\\.?\\S+}", method = RequestMethod.GET)
	public void helloMan(@PathVariable String imageName, HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		File f = new File("c://"+imageName);
		if (!f.exists()) {
			return;
		}
		FileInputStream fis = new FileInputStream(f);
		byte[] buffer = new byte[1024];
		int len =0;
		try {
			response.setHeader("Content-Type", "image/jpg;charset=UTF-8");
			ServletOutputStream outputStream = response.getOutputStream();
			
			while ((len=fis.read(buffer)) > 0) {
				outputStream.write(buffer, 0, len);
			}
			outputStream.flush();
			
		} finally {
			fis.close();
		}
		
	}

}

   这个是最基本的图片获取方式,我们可以把图片放入缓存中,然后通过读缓存而不是读文件来获取图片。

 

分享到:
评论

相关推荐

    Django+RestFramework API接口及接口文档并返回json数据操作

    主要介绍了Django+RestFramework API接口及接口文档并返回json数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice

    3. 我的任务提供Rest服务,完成日常的工作管理,通过定时调度平台,动态生成我的任务、循环周期任务、定时邮催提醒完成任务等 4. 文件上传、多线程下载服务化、发送邮件、短信服务化、部门信息服务化、产品信息服务...

    ASP EXCEL导入SQL

     REST软件架构之所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不管你的文件是图片、文件Word还是视频文件,也不管你的文件是txt文件格式、xml文件格式还是其它文本文件格式。它利用支持HTTP...

    WordPress中缩略图的使用以及相关技巧

    在博客上用到缩略图的机会很多, 它们出现在文章列表页面, 文章下方的相关文章, 分类页面的类目图片, 甚至有些博客很新潮地淡化文字以图片瀑布流作为文章索引. 站长们知道缩略图可以吸引眼球, 一直在寻找更好的使用...

    JavaScript模仿Pinterest实现图片预加载功能

    对于Pinterest网站,从前端设计出发的话,我们一定不会忘记我们曾经非常流行的瀑布流布局。但是今天,给大家简要分析下 Pinterest上另外一项非常值得借鉴图片加载细节。 看看下面的截图: 大家可以感觉到图片出来的...

    使用AngularJS 应用访问 Android 手机的图片库

    Download angularjs.zip – 4.5 KB 介绍 这篇文章来说明如何使用AngularJs调用android Apps暴露的...这些在手机里面的API列表和流媒体.通过AngularJs来调用REST APIS可以很方便的使用$resource 服务。 你可以创建你

    autolabelimg.zip

    根据输入的待定位图片\rtmp流\capture来完成自动定位,生成xxx_pos.jpg和xxx_pos.xml。 生成的图片和xml定位文件可以被标注工具labelimg解析(兼容)。 如果定位成功,则会弹出标注后的图片。如果失败,则不会弹出...

    java文件文档在线预览项目解决方案系统源码.zip

    rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持 最最重要 Apache 协议开源,代码 pull 下来想...

    fileView-4.3.0.zip

    支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像) 支持mp3,mp4,flv等多媒体文件预览 使用spring boot开发,预览服务搭建部署非常简便 rest接口提供服务,跨平台特性(java,php,python,go,php,....)都支持,...

    delphi7使用IXMLHTTPRequest实现RESTful的访问及返回json数据的解析

    delphi7使用IXMLHTTPRequest实现RESTful的访问及返回json数据的解析,推送消息段HMACSHA1加密编码

    java开源包5

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    Image-to-Image-Search:由弹性搜索和张量流提供动力的反向图像搜索引擎

    更新:Codeberg中此存储库的镜像:更新:添加了用于图像标题生成器和图像搜索的REST API! ( )演示版演示了核心功能。分行所需的软件包: 水蟒带Tensorflow后端的Keras(Python 3.6) Elastic Search和elastic...

    big-whale:Spark、Flink等离线任务的调度以及实时任务的监控

    基于Yarn Rest Api的任务状态同步机制,对Spark、Flink无版本限制 支持分布式 支持失败重试 支持任务依赖 支持复杂任务编排(DAG) 支持流处理任务运行管理和监控 支持Yarn应用管理 部署 1.准备 Java 1.8+ Mysql ...

    Python Django 深度学习 小程序

    ===本课程旨在提供给想学习当下最流行的全栈技术,快速实现自己想法,创作和发布自己的小程序/APP的同学一条捷径,以搭建一个轻量级的深度学习图片处理应用为例教你熟练掌握必要的技巧和框架。Talk?is?shit,?show?me...

    kkFileView-learn:对开放项目kkFileView的原始代码做了一些注释,方便学习和阅读

    如doc,docx,Excel,pdf,txt,zip,rar,图片等等项目特性支持办公室,pdf,cad等办公文档支持txt,java,php,py,md,js,css等所有纯文本支持zip,rar,jar,tar,gzip等压缩包支持jpg,jpeg,png,gif等图片...

    phoodi:美食家应用

    普霍迪 美食家正在进行的应用程序-原型@ 图片特征搜索指定地点附近的餐厅查找餐厅信息并发表评论创建或加入公共/私人聚会,并探索餐厅用餐的选择聊天应用与朋友/邀请对象的社交系统实时通知用户活动流Mapbox Api集成...

    awesome-perl:精选的Perl框架和库的精选列表。 来拉请求!

    图片 列表处理 记录中 模块开发 网络 ORM 包装管理 进程和线程 剖析 协议 排队 REST框架 科学/数值 流操纵 模板引擎 测验 测试框架 测试双 覆盖范围 工具 类型检查 视频 Web框架中间件 Web框架之类 网页抓取 网络...

    java简易版开心农场源码-filepreview:在线文件预览工具

    java简易版开心农场源码 file-online-preview ...rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持

    word源码java-previewFile:在线文件预览

    rest接口提供服务,跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持 最最重要Apache协议开源,代码pull下来想干嘛就干嘛 ...

    word源码java-file-online-preview:文件在线预览

    rest接口提供服务,跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持 最最重要Apache协议开源,代码pull下来想干嘛就干嘛 ...

Global site tag (gtag.js) - Google Analytics