html5 canvas 前端生成缩略图

摘要:
Html5canvas前端缩略图生成更新:对于移动Web开发,我们可以考虑使用前端生成缩略图。我们编写了一个jquery插件来生成缩略图,缩略图大小保持不变)背景:背景是透明的)类型:图像类型('image/jpeg'或'image/png')大小:生成缩略图的效果主要是指CSS3背景大小属性:显示在中心。mark:text:mark={padding:src:
html5 canvas 前端生成缩略图

更新
2013/08/01: 解决了后面遇到的bug: 图片被压扁(IOS6); 图片被旋转; 
整个源码放在: https://github.com/kairyou/html5-make-thumb 
新方案需要后面实现的, 就是下面的旧版本里的功能(水印/是否强制拉伸以适应目标尺寸等功能).

w3ctech长沙站交流会, 里面分享的PPT: http://www.slideshare.net/99leon/html5-create-thumbnail

之前有bug的版本放在分支old里(不推荐使用), 请使用更新的方案~

2013/01/07:
11年做的公司的移动页面, 上传图片时缩略图是靠后端生成, 但是随着现在的手机越来越牛X(摄像头比数码相机还厉害~), 图片体积也越来越大.
一个几M的图, 也许我们只是用来生成一个100*100的小图, 上传到后端再生成缩略图就大大的浪费了, 而且提交表单的等待时间也非长久, 对用户体验也不好.
普通的web表单, 上传图片靠后端来生成缩略图很平常, 但有了HTML5, 针对移动Web开发可以考虑使用前端生成缩略图了.

写了个生成缩略图的jquery的插件, 主要参数:

  1. width:生成缩略图的宽; height:生成缩略图的高;
  2. fill:图片小于缩略图尺寸时,是否填充(false:缩略图宽高自动缩放到适应图片,true:缩略图尺寸不变)
  3. background:生成图片填充背景(默认#fff, 设置null时, 背景透明)
  4. type:生成图片类型('image/jpeg''image/png')
  5. size:生成缩略图方式,生成缩略图的效果主要参考了CSS3background-size属性:
  6.   contain:等比缩放并拉伸,图片全部显示;
  7.   cover:等比缩放并拉伸,图片把容器完全覆盖;
  8.   auto:图片不拉伸,居中显示.
  9. mark:水印
  10.   文字水印: mark ={padding:5, height:18, text:'test', color:'#000', font:'400 18px Arial'}
  11.   图片水印: mark ={padding:5, src:'mark.png', width:34, height:45};
  12. stretch:小图是否强制拉伸以适应缩略图的尺寸(size =auto/contain时)
  13. success:生成缩略图后 callback

大体思路如下:
首先判断是否支持fileReader(支持fileReader, canvas就不在话下了)
不支持的话: 不做任何操作, 默认的input type="file"上传, 靠后端生成缩略图.
支持的情况: input change时, 判断选择的文件是图片, 就创建一个隐藏的canvas, 并把图片画到canvas里,
因为要生成缩略图, 所以在canvas里画图的时候, 控制剪切坐标和被剪切的宽高就OK了.
另外可以加上水印, 图片水印或者文字水印加到canvas上面也是比较方便的.
最后 canvas.toDataURL 转成base64, post到后端(先把input type="file"移除, 再生成个新的input type="hidden"储存图片数据), 后端接收后直接保存为图片就OK了.
主要用到: FileReader和canvas, 一个用来读取本地图片, 一个用来生成缩略图.

做移动网页开发的同学可以考虑下.

转自:http://www.fantxi.com/blog/archives/create-thumbnail-images-html5/

免责声明:文章转载自《html5 canvas 前端生成缩略图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序之发送模板消息(通过openid推送消息给用户)初识gauge自动化测试框架(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发之--使用storyboard下,tabbar小图标和文字颜色的设置

在开发项目的时候,如果是使用故事版设计的架构,那么在设置tabbar小图标的时候,可能会出现一点小问题, 成功的设置方法如下: 1.设置seleectedImage和image,其实就是非选中状态的图片,设置选中是的图片,也可以用代码设置,如下: self.tabBarController.tabBar.selectedItem.selectedI...

iOS:iOS开发中用户密码保存位置

原文来自简书:http://www.jianshu.com/p/4af3b8179136/comments/1294203 如果要实现自动登录,不必每次打开应用都去登录,我们势必要把密码保存到本地。一般我们的操作是:每次打开应用后,如果存在密码,直接进入界面,然后再进行后台密码验证。如果没网络,我们可以跳过验证;如果有网络,我们可以后台去验证帐号密码的正确...

VisionPro 各控件的C#中类库 (CogImageFileTool,CogImageConvert,图片显示cogRecordDisplay)

我使用VISIONPRO 的版本为9.0;往往很多USB相机没有办法使用,我们可以采用拍图在文档下再同步抓取图片,再使用。 1.实现配置好CogImageFileTool工具,保存在文档中为img.vpp,步骤如下4步。 CogImageFileTool 序列化回来: CogImageFileTool file1 = (CogImageFileTool...

Java 基础(ASCII 码,Unicode 编码,UTF-8, 二进制)

ASCCII 码 在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有0和1两种状态,因此8个二进制位就可以组合出256种状态,这被称为一个字节(byte)。一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 缺点: 不能表示所有字符。 相同的编码表示的字符不一样:比如...

Java解析word,获取文档中图片位置

前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word、excel、ppt格式的文档。 其中对word文档的处理有两个技术,分别是HWPF(.doc)和XWPF(.docx)。如果你对这两个技术熟悉的话,就应该能明白使用java解析word文档的痛楚所在。 其中两个最大的问题在于...

Delphi跨进程间消息通讯

多个不同进程之间的消息传递有多种方式,但若传递的信息量不大,借用WINDOW的消息机制不失为一种简易有效的方法, 01. 注意 PostMessage  与 SendMessage 之间的异同;   PostMessage: 异步消息模式,负责向指定的句柄发送消息,不等待结果直接返回;         一般适用于进程内的信息传递处理;(如多个不同线程向主线...