<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="javascript生成缩略图后上传并利用canvas重绘" id="card1">
<p> 游客</p><p>
标题:javascript生成缩略图后上传并利用canvas重绘<br/>
正文:<br/>
一般在处理图片上传时，通常的逻辑都是将源图片上传到服务器端，再由服务器端的语言进行缩放大小的操作。 <br/><br/>此种模式一般可以满足大部分的需求，但当我们所需要的图片仅仅是一个符合规定大小的源图片的缩略图，再使用此种模式，将是一种浪费服务端资源以及带宽的方式，故我们考虑在浏览器端生成小图后再进行上传操作。 <br/><br/>//以下为源代码 <br/>代码如下:<br/>function drawCanvasImage(obj,width, callback){ <br/><br/>var $canvas = $('&amp;lt;canvas&amp;gt;&amp;lt;/canvas&amp;gt;'), <br/>canvas = $canvas[0], <br/>context = canvas.getContext('2d'); <br/><br/>var img = new Image(); <br/><br/>img.onload = function(){ <br/>if(width){ <br/>if(width &amp;gt; img.width){ <br/>var target_w = img.width; <br/>var target_h = img.height; <br/>}else{ <br/>var target_w = width; <br/>var target_h = parseInt(target_w/img.width*img.height); <br/>} <br/>}else{ <br/>var target_w = img.width; <br/>var target_h = img.height; <br/>} <br/>$canvas[0].width = target_w; <br/>$canvas[0].height = target_h; <br/><br/>context.drawImage(img,0,0,target_w,target_h); <br/><br/>_canvas = canvas.toDataURL(); <br/>/*console.log(_canvas);*/ <br/>callback(obj,_canvas); <br/>} <br/>img.src = getFullPath(obj); <br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1096&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1096&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1096&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1096&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1096">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1096">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>