基于jQuery功能非常强大的图片裁剪插件
今天我们要来介绍一款基于jQuery功能非常强大的图片裁剪插件,这款jQuery图片裁剪插件可以选择裁剪框的尺寸比例,可以设置高宽尺寸,同时可以设置图片翻转角度,当然也支持图片的缩放,裁剪框也可以用鼠标拖动。效果图如下:
来看看实现的代码,这里我们主要来看JavaScript代码
获取图片的Canvas画布:
- function getSourceCanvas(image, data) {
- var canvas = $('<canvas>')[0],
- context = canvas.getContext('2d'),
- width = data.naturalWidth,
- height = data.naturalHeight,
- rotate = data.rotate,
- rotated = getRotatedSizes({
- width: width,
- height: height,
- degree: rotate
- });
- if (rotate) {
- canvas.width = rotated.width;
- canvas.height = rotated.height;
- context.save();
- context.translate(rotated.width / 2, rotated.height / 2);
- context.rotate(rotate * Math.PI / 180);
- context.drawImage(image, -width / 2, -height / 2, width, height);
- context.restore();
- } else {
- canvas.width = width;
- canvas.height = height;
- context.drawImage(image, 0, 0, width, height);
- }
- return canvas;
- }
加载图片:
- prototype.load = function (url) {
- var options = this.options,
- $this = this.$element,
- crossOrigin,
- bustCacheUrl,
- buildEvent,
- $clone;
- if (!url) {
- if ($this.is('img')) {
- if (!$this.attr('src')) {
- return;
- }
- url = $this.prop('src');
- } else if ($this.is('canvas') && SUPPORT_CANVAS) {
- url = $this[0].toDataURL();
- }
- }
- if (!url) {
- return;
- }
- buildEvent = $.Event(EVENT_BUILD);
- $this.one(EVENT_BUILD, options.build).trigger(buildEvent); // Only trigger once
- if (buildEvent.isDefaultPrevented()) {
- return;
- }
- if (options.checkImageOrigin && isCrossOriginURL(url)) {
- crossOrigin = 'anonymous';
- if (!$this.prop('crossOrigin')) { // Only when there was not a "crossOrigin" property
- bustCacheUrl = addTimestamp(url); // Bust cache (#148)
- }
- }
- this.$clone = $clone = $('<img>');
- $clone.one('load', $.proxy(function () {
- var naturalWidth = $clone.prop('naturalWidth') || $clone.width(),
- naturalHeight = $clone.prop('naturalHeight') || $clone.height();
- this.image = {
- naturalWidth: naturalWidth,
- naturalHeight: naturalHeight,
- aspectRatio: naturalWidth / naturalHeight,
- rotate: 0
- };
- this.url = url;
- this.ready = true;
- this.build();
- }, this)).one('error', function () {
- $clone.remove();
- }).attr({
- src: bustCacheUrl || url,
- crossOrigin: crossOrigin
- });
- // Hide and insert into the document
- $clone.addClass(CLASS_HIDE).insertAfter($this);
- };
预览截图:
- prototype.initPreview = function () {
- var url = this.url;
- this.$preview = $(this.options.preview);
- this.$viewBox.html('<img src="' + url + '">');
- // Override img element styles
- // Add `display:block` to avoid margin top issue (Occur only when margin-top <= -height)
- this.$preview.each(function () {
- var $this = $(this);
- $this.data(CROPPER_PREVIEW, {
- width: $this.width(),
- height: $this.height(),
- original: $this.html()
- }).html('<img src="' + url + '" style="display:block;width:100%;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation: 0deg!important">');
- });
- };
via:http://www.w2bc.com/Article/37726
基于jQuery功能非常强大的图片裁剪插件的更多相关文章
- js插件---强大的图片裁剪Cropper
js插件---强大的图片裁剪Cropper 一.总结 一句话总结:官网或者github里面的文档或者demo才是真的详细 使用的话找到图片裁剪后的base64数据,然后这个数据可下载可传递到服务器 1 ...
- Cropper – 简单的 jQuery 图片裁剪插件
Cropper 是一个简单的 jQuery 图像裁剪插件.它支持选项,方法,事件,触摸(移动),缩放,旋转.输出的裁剪数据基于原始图像大小,这样你就可以用它们来直接裁剪图像. 如果你尝试裁剪跨域图像, ...
- Croppic – 免费开源的 jQuery 图片裁剪插件
Croppic 这款开源的 jQuery 图片裁剪插件能够满足网站开发人员各种不同的使用需要.只需要简单的上传图片,就可以实现你想要的图像缩放和裁剪功能.因为使用了 HTML5 FormData 对 ...
- 5 款最新的 jQuery 图片裁剪插件
这篇文章主要介绍最新的 5 款 jQuery 图片裁剪插件,可以帮助你轻松的实现你网站需要的图像裁剪功能. Cropit Cropit 是一个 jQuery 插件,支持图像裁剪和缩放功能.Cropit ...
- jQuery 图片裁剪插件 Jcrop
Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 ...
- 基于 jQuery 实现的精致作品集图片导航效果
今天,我们要用 jQuery 来创建一个作品集图像的导航模板.我们的想法是,以分组的方式显示一组作品集,并通过二维的方式(水平/垂直)来浏览.任一箭头或当前图像下方的小盒子可以作为导航使用. 在线演示 ...
- 基于jQuery商城网站全屏图片切换代码
基于jQuery商城网站全屏图片切换代码.这是一款商城网站全屏多张图片滑动切换代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="slid ...
- 开源JS图片裁剪插件
开源JS图片裁剪插件 一.总结 一句话总结: 要用点赞最高的插件,这样适用性最好,效果最好,出问题的概率也最低,这里电脑端和手机端都可以用的建议用 cropper.js 二.5款好用的开源JS图片裁剪 ...
- Dropdown.js基于jQuery开发的轻量级下拉框插件
Dropdown.js 前言 在SPA(Single Page Application)盛行的时代,jQuery插件的轮子正在减少,由于我厂有需求而开发了这个插件.如果觉得本文对您有帮助,请给个赞,以 ...
随机推荐
- win7系统总是安装不了net2.0的解决方法
一些网友询问说ghost win7系统总是安装不了net2.0怎么办呢?net2.0是什么?ATI显卡的控制中心 就需要在NET2.0的基础上.可是一些用户说win7系统总是安装不了net2.0如何解 ...
- 【MySQL】mysql中any,in,some,all的区别
子查询就是指在一个select语句中嵌套另一个select语句. any,in,some,all分别是子查询关键词之一, any 可以与=.>.>=.<.<=.<> ...
- 【SqlServer】Sql Server 支持的数据类型
在计算机中数据有两种特征:类型和长度.所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类. 在SQL Server 中每个变量.参数.表达式等都有数据类型.系统提供的数据类型分为几大类 ...
- 【webservice】使用命令wsimport构建WebService客户端
wsimport命令介绍 在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方 ...
- SharePoint CAML In Action——Part I
在SharePoint中,我们经常要对List进行操作,比如要从List中取出相应的ListItem,利用CAML是个好办法.在没了解CAML之前,我是这样取数据的: MyList.Items.Cas ...
- C#数组之 []、List、Array、ArrayList应用
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Python 文件 seek() 方法
概述 Python 文件 seek() 方法用于移动文件读取指针到指定位置. 语法 seek() 方法语法如下: fileObject.seek(offset[,whence]) 参数 offset ...
- DVWA安装——一个菜鸟的入门教程
DVWA的安装非常简单: 1.更改config/config.inc.php文件中的数据库配置信息 2.访问setup.php,点击create/reset database即可 3.默认用户名/密码 ...
- [转]Spring注解-@Configuration注解、@Bean注解以及配置自动扫描、bean作用域
1.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文) package com.test.s ...
- Python 爬虫实例(13) 下载 m3u8 格式视频
Python requests 下载 m3u8 格式 视频 最近爬取一个视频网站,遇到 m3u8 格式的视频需要下载. 抓包分析,视频文件是多个 ts 文件,什么是 ts文件,请去百度 ...