HTML5:使用Canvas和Input range控件放大缩小图片

引自:http://blog.csdn.net/ClementAD/article/details/48938261

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>图片缩放</title>
</head>

<body style="background: black;">
    <canvas id="canvas" style="display: block;margin: 0 auto;border: 1px solid #aaa;">
        你的浏览器不支持canvas。
    </canvas>
    <input type="range" id="slider" min="0.5" max="3.0" step="0.01" value="1.0" style="display: block;margin: 20px auto;width: 800px;"/>
</body>

    <script>
        var canvas = document.getElementById("canvas");
        var context = canvas.getContext("2d");

        var slider = document.getElementById("slider");

        var image = new Image(); //定义一个Image对象

        window.onload = function(){
            canvas.width = 1200;
            canvas.height = 800;

            image.src="http://www.xingbo.tv/static/images/keyImg.png"; //加载图片

            //需要等image load完再把它画到canvas中,不然的话可能有不良后果
            image.onload = function() {
                drawImageByScale(slider.value);

                slider.onmousemove = function(){
                    drawImageByScale(slider.value);
                };
            };

            /**
             * 根据一个缩放比例在画布上画一个图像
             * @param  {float} scale 缩放比例
             */
            function drawImageByScale(scale){
                //根据图片的缩放比例调整图片的长宽
                var imageWidth = canvas.width * scale;
                var imageHeight = canvas.height * scale;

                //画布上的起始点:画布的大小一半减去图像大小的一半。可以为负数,表示在左上角的外面。
                var dx = canvas.width/2 - imageWidth/2;
                var dy = canvas.height/2 - imageHeight/2;

                 //清空画布
                context.clearRect(0, 0, canvas.width, canvas.height);

                //把image画到canvas中,dx、dy表示起始点坐标
                context.drawImage(image, dx, dy, imageWidth, imageHeight);
            }
        };
    </script>
</html>
时间: 2024-08-08 13:54:13

HTML5:使用Canvas和Input range控件放大缩小图片的相关文章

为什么Jquery对input file控件的onchange事件只生效一次

今天在做jquery对input file控件的onchange事件进行监听,就一直只生效一次,不知道Jquery为什么对file控件没有做到每次改变触发onchange事件的效果,但是还是有好几种解决方法的: 1.原始方法:把事件写在file控件的onchange=""里面: 2.Jquery方法一: $('#fileId').live('change',function(){ //逻辑添加.... }); 3.Jquery方法二: onchange后,生成一个新input type

解决Jquery对input file控件的onchange事件只生效一次的问题

如题,解决办法的代码如下: 1. $('#fileId').live('change',function(){ //逻辑添加.... }); 2. $('#fileId').change(function(){ $('#inputFileID').replaceWith('<input name="fileToUpload" type="file" id="inputFileID" />'); }); 解决Jquery对input f

0821基本控件实例1 ——图片浏览器

一.项目需求--照片浏览器 二.开发步骤 1. 新建项目 2. 搭建UI界面 3. 建立IBOutlet,以便代码能够处理界面元素 4. 建立IBAction,以便界面上某些事件发生时执行方法 5. 代码实现 提示:为了便于理解,开发过程分两个步骤完成 三.演练说明 1.本节使用到的控件包括:UILabel,UIImageView,UISwitch,UIStepper和UISlider五个基本控件,除了第一个UILabel大家已经接触过之外,其他的四个控件都是第一次接触 2.开发过程中首先通过两

Android控件上添加图片

项目中有一个点赞功能,点赞的小图标添加在点赞列表旁边,在xml里可以进行设置,也可以在代码中进行绘图. 下面是两种方法的设置: 1.xml里:一些控件:button.textView等等里面有个属性是android:drawableLeft 就可以将pic设置到text的左边.good.... 2.代码中: TextView txtlikedList = new TextView(this.getContext()); Drawable drawable= getResources().getD

Android调用相册拍照控件实现系统控件缩放切割图片

android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家 package cn.m15.test; import java.io.ByteArrayOutputStream;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Ur

对话框上动态控件的创建、在Picture Control控件上显示图片

1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控件时,就需要手动来代替类向导为动态控件添加消息.响应函数及变量. 动态创建控件时,可按照以下步骤进行: (1) 明确控件所属于的类 每一个控件都对应着一个类(例如按钮Button所属于的类为CButton). 如,在程序中我们需要用CButton类创建一个具体的按钮对象,并用函数指示它在对话框之上的

保存图片控件上的图片到本地 出现错误:无法将类型为“System.Windows.Media.Imaging.BitmapFrameDecode”的对象强制转换为类型“System.Windows.Media.Imaging.BitmapImage”。

保存图片控件上的图片到本地 出现错误:无法将类型为“System.Windows.Media.Imaging.BitmapFrameDecode”的对象强制转换为类型“System.Windows.Media.Imaging.BitmapImage”. try { System.Windows.Controls.MenuItem menuitem = sender as System.Windows.Controls.MenuItem; BitmapImage bitmap = (BitmapI

WPF 保存image控件里的图片

string ProImgPath = ProcessPath + name + ".png";//要保存的图片的地址,包含文件名 BitmapSource BS = (BitmapSource)ImgPro.Source; PngBitmapEncoder PBE = new PngBitmapEncoder(); PBE.Frames.Add(BitmapFrame.Create(BS)); using (Stream stream = File.Create(ProImgPath

WPF Image控件使用本地图片

BitmapImage bi = new BitmapImage(); // BitmapImage.UriSource must be in a BeginInit/EndInit block. bi.BeginInit(); StreamResourceInfo info = Application.GetRemoteStream(new Uri("Test.jpg", UriKind.Relative)); bi.StreamSource = info.Stream; bi.En