使用canvas进行图片裁剪简单功能

1.html部分

使用一个input[type="file"]进行图片上传;

canvas进行图片的裁剪展示

<div>
    <input type="file" id="imgFile">
</div>
<div id="demoBox" style="width: 300px;height: 300px;position: absolute;left: 300px;top: 0;overflow:hidden;border: 1px solid #ccc">
    <img id="demoImg" alt="">
    <div style="width: 150px;height: 150px;border: 1px solid #4fb8e3;background:rgba(255,255,255,.5);position: absolute;left: 0;top: 0;z-index: 1000;cursor:move" id="chooseBox"></div>
</div>
<div style="position: absolute;left: 700px;top: 0">
    <canvas id="myCan" width="150" height="150"></canvas>
    <button id="cut">裁剪文件</button>
    <button id="btn">后台返回获取裁剪后的文件</button>
    <img id="returnImg" alt="">
</div>

2.js部分

a.使用file文件的files属性,获取上传图片的基本属性;

b. new FileReader() 对象,使用其属性e.target.result将图片地址转为base64,赋给img标签上;

c. 创建一个裁剪选区,用以选择需要裁剪的部位,同事使用mousedown,mousemove,mouseup事件进行选框的拖拽;

d. 使用canvas中的drawImage()方法进行图片的裁剪,展示到canvass画布上;

e.用户在使用裁剪时候,可多次裁剪,因此需要每次裁剪之后利用clearRect()方法,进行画布的清除

// 图片裁剪

    window.onload = function () {

        // 上传图片
        var canvas = document.getElementById(‘myCan‘);
        var imgFile = $(‘#imgFile‘);
        var demoImg = $(‘#demoImg‘);
        var ctx = canvas.getContext(‘2d‘);
        imgFile.change(function () {
            var file = imgFile[0].files[0];
            console.log(file);
            var reader = new FileReader();
            reader.onload = function (e) {
                console.log(e);
                demoImg.attr(‘src‘, e.target.result);
            };
            reader.readAsDataURL(file);
        });

        // 位移选裁框
        var dragDiv = $(‘#chooseBox‘);
        dragDiv.mousedown(function (e) {
            var oleft = $(this).position().left;
            var otop = $(this).position().top;
            var X = e.pageX - oleft;
            var Y = e.pageY - otop;
            $(document).mousemove(function (e) {
                var left = e.pageX - X;
                var top = e.pageY - Y;
                if (left <= 0) {
                    left = 0;
                }
                else if (left >= ($(‘#demoBox‘).outerWidth(true) - dragDiv.outerWidth(true))) {
                    left = ($(‘#demoBox‘).outerWidth(true) - dragDiv.outerWidth(true));
                }

                if (top <= 0) {
                    top = 0;
                }
                else if (top >= ($(‘#demoBox‘).outerHeight(true) - dragDiv.outerHeight(true))) {
                    top = ($(‘#demoBox‘).outerHeight(true) - dragDiv.outerHeight(true));
                }

                dragDiv.css({
                    left: left,
                    top: top
                });

            });
        });
        $(document).mouseup(function () {
            $(this).unbind(‘mousemove‘);
        });

        // 裁剪
        function cut() {
            var sx = dragDiv.position().left;
            var sy = dragDiv.position().top;
            var img = document.getElementById(‘demoImg‘);
            ctx.drawImage(img, sx, sy, 150, 150, 0, 0, 150, 150);
        }

        $(‘#cut‘).click(function () {
            ctx.clearRect(0, 0, 150, 150);
            cut();
        });

    };
时间: 2024-10-19 05:28:17

使用canvas进行图片裁剪简单功能的相关文章

Java+Javascript图片裁剪简单封装

在做项目的过程中,有很多时候前端的图片会出现拉伸现象,所以在上传图片的时候,图片裁剪是必不可少的.所以有了封装一个图片裁剪工具的念头,下面是实现步骤: 1.首先选择一个前台裁剪工具,我这里使用的是Jcrop-0.9.12. 2.开始编写前端js代码: 我这里把前端封装成一个函数 /**      * 初始化裁剪工具.      * @param divId 定义生成填充页面代码的div(函数产生的代码会填充到此div内)     * @param imagePath 图片地址     * @pa

模拟系统照相机图片裁剪的功能

效果如下: 源码: // // RootViewController.m // ScrollView // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" @interface RootViewController ()<UIScrollViewDelegate> { BOOL tapped; } @property (nonatomic, strong)

Java实现图片裁剪预览功能

Java实现图片裁剪预览功能 在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章! 需要插件:jQuery Jcrop 后端代码: package org.csg.upload; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import 

好用的开源库(二)——uCrop 图片裁剪

最近想要实现图片裁剪的功能,在Github上找到了这个uCrop,star的人挺多的,便是决定入坑,结果长达一个小时的看资料+摸索,终于是在项目中实现了图片裁剪的功能,今天便是来介绍一下uCrop的使用方法 uCrop 目录: 配置 流程介绍 使用 配置 1.添加依赖 maven { url "https://jitpack.io" }compile 'com.github.yalantis:ucrop:2.2.1' 2.配置Androidmanifest文件 <activity

jQuery 图片裁剪插件 Jcrop

Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 minSize/maxSize设置 支持改变选区或移 动选区时的回调(Callback) 支持用键盘微调选区 通过API创建互动,比如动画效果 支持CSS样式 版本及Demo jQuery v1.5.1+ Jcrop v0.9.9 Demo地址:http://deepliquid.com/ 下载地址

Android图片裁剪之自由裁剪

我的博客http://blog.csdn.net/dawn_moon 客户的需求都是非常怪的.我有时候在给客户做项目的时候就想骂客户是sb.可是请你相信我,等你有需求,自己变成客户的时候,给你做项目的哥哥肯定也会骂你是sb. 是这种,客户须要做一个图片上传的功能,这个图片须要裁剪.一般而言,这东西用系统自带的裁剪就搞定了.但是客户不,他要能够自由裁剪,就是长宽比不固定,想裁成什么比例就裁成什么比例,我一听,蛋都碎了. 没有办法,客户sb归sb,需求还是得照做,不然不给钱要喝西北风了. 图片裁剪的

从web图片裁剪出发:了解H5中的canvas

本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 重说三,好了,现在进入正文.在上一回<从web图片裁剪出发:了解H5中的blob>中我解释了图片在浏览器中以怎样的形式留存,并且在最后一个example中演示了选择图片.预览最后提交的过程.然而这个预览并没有起到什么卵用,因为只能预览不能处理,原图片还是原图片,预览变得可有可无.这一篇我们就在预览这一步里做点手脚,加

基于jQuery功能非常强大的图片裁剪插件

今天我们要来介绍一款基于jQuery功能非常强大的图片裁剪插件,这款jQuery图片裁剪插件可以选择裁剪框的尺寸比例,可以设置高宽尺寸,同时可以设置图片翻转角度,当然也支持图片的缩放,裁剪框也可以用鼠标拖动.效果图如下: 在线预览   源码下载 来看看实现的代码,这里我们主要来看JavaScript代码 获取图片的Canvas画布: function getSourceCanvas(image, data) { var canvas = $('<canvas>')[0], context =

简单二次封装的Golang图像处理库:图片裁剪

简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u github.com/hunterhug/go_image 2.主要函数 按照宽度进行等比例缩放,第一参数是图像文件,第二个参数是缩放后的保存文件路径 err := ScaleF2F(filename, savepath, width) 按照宽度和高度进行等比例缩放,第一参数是图像文件,第二个参数是缩放后的保