Canvas---Canvas图像处理、图片查看器、图像缩放功能的实现。
2015-01-31 21:43
411 查看
模仿手机图像查看软件用canvas实现一个图像查看器。
目前实现:
利用将图像起点绘制到canvas之外的技术实现了图像的缩放。
包括,图像自适应、图像放大缩小
下一步准备实现:
鼠标拖动图像
截图:
总结下要点与步骤:
要点:图像缩放与自适应要一起做的话,缩放对象实际是canvas,然后图像去对新的canvas做自适应。
步骤:
1.缩放canvas,得到缩放后的canvas的长宽。
2.图像对于缩放后的canvas做自适应,得到图像的长宽。
3.利用旧canvas的中心点与缩放后图像的长宽,计算图像绘制起点。
4.调用drawImage();方法,传入图像,绘制起点,缩放长宽。
本文由 CSDN MIKUScallion 原创,更多canvas案例代码:http://blog.csdn.net/mikuscallion
下面是源代码:
①页面代码
②图像工具代码
本文由 CSDN MIKUScallion 原创,更多canvas案例代码:http://blog.csdn.net/mikuscallion
目前实现:
利用将图像起点绘制到canvas之外的技术实现了图像的缩放。
包括,图像自适应、图像放大缩小
下一步准备实现:
鼠标拖动图像
截图:
总结下要点与步骤:
要点:图像缩放与自适应要一起做的话,缩放对象实际是canvas,然后图像去对新的canvas做自适应。
步骤:
1.缩放canvas,得到缩放后的canvas的长宽。
2.图像对于缩放后的canvas做自适应,得到图像的长宽。
3.利用旧canvas的中心点与缩放后图像的长宽,计算图像绘制起点。
4.调用drawImage();方法,传入图像,绘制起点,缩放长宽。
本文由 CSDN MIKUScallion 原创,更多canvas案例代码:http://blog.csdn.net/mikuscallion
下面是源代码:
①页面代码
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <style type="text/css"> canvas{ background-color: black; } .contain{ margin: 0 auto; width: 480px; height: 640px; position: relative; } .scaleSlider{ margin: 0px; padding: 0px; position: absolute; /*旋转元素*/ transform:rotate(-90deg); top: 70px; left:400px; } </style> <script type="text/javascript" src="mikuCanvasImageUtil.js"></script> </head> <body> <div class="contain"> <input id="scaleSlider" class="scaleSlider" type="range" min="0.25" max="4" step="0.01" value="1" /> <canvas id="canvas" width="480" height="640"> </canvas> </div> </body> <script type = "text/javascript"> var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); var scaleSlider = document.getElementById("scaleSlider"); var image = new Image(); var imageUtil = new MikuCanvasImageUtil(); image.src ="miku01.jpg"; image.onload = function(){ //将图像缩放后绘制到canvas中央 imageUtil.drawScaleImageInCenter(context,image); } scaleSlider.onchange = function(){ //清除屏幕 context.clearRect(0,0,canvas.width,canvas.height); //根据缩放比例将图像在中心缩放 imageUtil.scaleImgInCenter(context,image,scaleSlider.value,false); } </script> </html>
②图像工具代码
var MikuCanvasImageUtil = function(){ } MikuCanvasImageUtil.prototype = { //--------------------------------------------------------------------------------- //图像在canvas中心区域按照给定比例缩放 //noOver表示是,阻止过度缩放?默认true //date:2014-1-31 //author:MIKUScallion scaleImgInCenter:function (context,image,scale,noOver){ //获得原有canvas长宽 var cw = context.canvas.width; var ch = context.canvas.height; //获得缩放后的canvas长宽 var scaledCw = cw*scale; var scaledCh = ch*scale; //获得相对新canvas的缩放对象 var scaleObj = this.getScaleObj(image,scaledCw,scaledCh,noOver); //获取原有canvas中心坐标 var canvasCenterX = context.canvas.width/2; var canvasCenterY = context.canvas.height/2; //相对于canvas中心点计算,图像顶点 var imageStartPointX = canvasCenterX - scaleObj.width/2; var imageStartPointY = canvasCenterY - scaleObj.height/2; //绘制图像 context.drawImage(image,imageStartPointX,imageStartPointY,scaleObj.width,scaleObj.height); }, //将image缩放后绘制到canvas中心 //date:2014-1-31 //author:MIKUScallion drawScaleImageInCenter:function(context,image){ //获取canvas中心坐标 var canvasCenterX = context.canvas.width/2; var canvasCenterY = context.canvas.height/2; //相对原本的canvas获取缩放对象 var scaleObj = this.getScaleObj(image,context.canvas.width,context.canvas.height); //计算图像顶点 var imageStartPointX = canvasCenterX - scaleObj.width/2; var imageStartPointY = canvasCenterY - scaleObj.height/2; //绘制图像 context.drawImage(image,imageStartPointX,imageStartPointY,scaleObj.width,scaleObj.height); }, //获得图像相对与一个矩形的缩放对象 //该对象包含:width,height //date:2014-1-31 //author:MIKUScallion getScaleObj:function(image,width,height,noOver){ //默认不能过度缩放 noOver = noOver===undefined? true:noOver; var scaleW,scaleH; var widthLonger = image.width - width; var heightLonger = image.height - height; if(noOver){ //图像无需缩放 if(widthLonger <=0 && heightLonger<=0 ){ scaleW = image.width; scaleH = image.height; return { width:scaleW, height:scaleH }; } } //固定宽度缩放 if(widthLonger >= heightLonger){ scaleW = width; var percent = width/image.width; scaleH = image.height*percent; } //固定长度缩放 else{ scaleH = height; var percent = height/image.height; scaleW = image.width*percent; } //---------------- return { width:scaleW, height:scaleH }; } }
本文由 CSDN MIKUScallion 原创,更多canvas案例代码:http://blog.csdn.net/mikuscallion
相关文章推荐
- Canvas---Canvas图像处理、图片查看器实现思路整理、拖动边界控制
- Canvas---Canvas图像处理、图片查看器、图像拖动实现、js面向对象编程
- 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能
- Android 图片处理之-->android.graphics.Camera实现图像的旋转、缩放
- PHP课程十大 PHP图像处理功能和实现的验证码
- canvas图像处理实现马赛克效果
- [导入]jquery+.net实现类似开心网图像缩放截取功能(附代码下载)
- C#图像显示实现拖拽、锚点缩放功能
- jquery+.net实现类似开心网图像缩放截取功能(附代码下载)
- matlab图像处理基础知识1(双线性插值matlab实现--等比例调整缩放倍数)
- jquery+.net实现类似开心网图像缩放截取功能(附代码下载)
- 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解
- 功能及需求:pictureBox里图像的缩放,要求不保存缩放后的图像,只对原图像进行查看式缩放,且图像缩小然后放大,处理图像失真的问题。
- canvas实现图像截取功能
- 图片处理工具类: 功能:缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
- 几种常见计算机图像处理操作的原理及canvas实现
- JavaScript实现在线图像处理功能
- 数字图像处理基本软件VC++实现基本处理功能(一)
- 数字图像处理基本软件VC++实现基本处理功能 (二)
- canvas系列--图像处理(三) 图像缩放