imgareaselect + php 裁剪和上传,jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能

本文主要介绍了jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一,需要的朋友可以参考下,希望能帮助到大家。

上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识;那么现在看一下实例:

首先,要知道我们应该实现什么功能?

(1)图片能够实现上传预览功能

(2)拖拽裁剪图片,使其能够显示裁剪后的区域

(3)显示要裁剪区域的坐标

其次,该如何引用该插件呢?

那就具体看一下吧!

第一步:先将样式和文件包引入(根据你自己的位置引入)

第二步:先用p布局样式,如下图所示

亲,请上传图片并裁剪

选区预览

坐标

X1: Y1: X2: Y2:

6e39195e7f1b6bc506b5f6eae2b7d9a4.png

css样式:

#uploadPreview

{

width: 170px;

height: 170px;

background-position: center center;

background-size: cover;

border: 1px solid brown;

-webkit-box-shadow: 0 0 0px 0px rgba(0, 0, 0, 0);

display: inline-block;

}

第三步:实现图片的上传预览效果

思路:通过input 将图片的 src传给第一个img,然后再将第一个img的src传给第二个img的src

//通过input将图片路径传给第一个img

$("#uploadImage").on("change", function(){

// 得到一个参考文件列表

var files = !!this.files ? this.files : [];

// 如果没有选择任何文件,或者没有文件读到就返回

if (!files.length || !window.FileReader) return;

// 只有进行选择的文件是一个形象

if (/^image/.test( files[0].type)){

// 创建一个新的FileReader的实例

var reader = new FileReader();

// 读取本地文件作为一个DataURL

reader.readAsDataURL(files[0]);

// 当加载时,图像数据设置为背景的p

reader.onloadend = function(){

//给第一个img添加路径

$("#uploadPreview").attr("src",this.result);

//给第二个img添加路径

$("#tp").attr("src",this.result);

//开启裁剪功能

$('#uploadPreview ').imgAreaSelect( {handles:true, fadeSpeed:200, onSelectEnd : preview});

}

}

});

这样,就能够实现如下效果:

点击浏览

200788244005c7fbd7580bad282da064.png

点击选择 :

c73af01b60f9e208c3c6dc22557f8ed2.png

第四步:实现区域选择功能

function preview(img, selection)

{

if(!selection.width || !selection.height) //判断选取区域不为空

return;

//分别取高宽比率

var scaleX = 100 / selection.width;

var scaleY = 100 / selection.height;

var img = new Image();

//传路径

img.src = document.getElementById('uploadPreview').src;

//给裁剪的图片定义高和宽

$('#preview img').css( {

width : Math.round(scaleX * 170), //170为第一个img的宽,不然截取的图片会有所缺失,可以自己试试

height: Math.round(scaleY * 170), //170为第一个img的高

marginLeft: -Math.round(scaleX * selection.x1),

marginTop: -Math.round(scaleY * selection.y1)

});

//显示坐标

$('#x1').val(selection.x1);

$('#y1').val(selection.y1);

$('#x2').val(selection.x2);

$('#y2').val(selection.y2);

}

这样就可以实现如下效果啦~~~

25bf02bc48af14f7c1010b593e6d3672.png

到这一步就可以实现头像的上传以及裁剪功能了,当然后期还要将路径添加到数据库就更完美了~~~~

(------------------------------------------------------------------------此处应有分割线----------------------------------------------------------------------)

如果你只想实现简单的图片裁剪功能,那么可以看看下面代码,此处不做注释了~~~

当然,如果上边的代码看不太明白,也可以参照下面的这个进行修改,将图片上传预览功能添加上即可哈~~~~

效果图:(对比图片就可以知道,下面这个就只是少了浏览功能,其他完全一样)

9f840e824ee2e84102504870f09e67b3.png

ad037e2a0a4292e6f82abe8ced746fd1.png

$(document).ready(function() {

$('#photo').imgAreaSelect( {handles:true, fadeSpeed:200, onSelectEnd : preview});

});

// 如果加上aspectRatio: '1:1',$('#photo').imgAreaSelect( {aspectRatio: '1:1',handles:true, fadeSpeed:200, onSelectEnd : preview});则选取区域固定为正方形。

function preview(img, selection)

{

//等同于var scaleX = 100 / (selection.width || 1)

//先对||前面的进行布尔运算,如果结果是true(即width存在且不是0),就使用width,否则使用||后的变量1

//也就是先检查 selection.width 有没有值,有的话就用 100 / 该值再付给 scaleX,没的话就用 100 / 1 来赋值;

if(!selection.width || !selection.height)

return;

var scaleX = 100 / selection.width;

var scaleY = 100 / selection.height;

//设置裁剪后图片的宽高

$('#preview img').css( {

width : Math.round(scaleX * 200),

height: Math.round(scaleY * 200),

marginLeft: -Math.round(scaleX * selection.x1),

marginTop: -Math.round(scaleY * selection.y1)

});

$('#x1').val(selection.x1);

$('#y1').val(selection.y1);

$('#x2').val(selection.x2);

$('#y2').val(selection.y2);

$('w').val(selection.width);

$('h').val(selection.height);

}

Click and drag on the image to select an area.

1.jpg

Selection Preview

1.jpg

Coordinates

X1: Y1: X2: Y2:

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经过数20天的开发,shearphoto的第一个版本终于完成, 我开发shearphoto的全因是切图,截图这类WEB插件实在太少,我特此还专门在网上下载过几个关于截图插件, 基本上互联网上所有的截图插件我都看过了一遍,压根没有令我满意的,要不功能太小,要不BUG超多 要不都基于FLASH的,基于FLASH的截图很不好,扩展性非常差,不方便二次开发这是一个重点问题。 还有些截图插件是收费200块去版权,本来就不怎么让人满意,还收费呢!我就不点名是哪个截图插件了。 于是就想到自己开发一个这样的插件。 本人开发shearphoto前提,首先是不会对代码进行加密,所有代码都是开源的,必须兼容目前所有浏览器(包括IE6)。 也就是说你可以对shearphoto任意修改!另外shearphoto不会对你收取任何费用,当然如果你要找本人定制开发就另谈了! 再说说这20天开发,那简直就是人间炼狱,每天12小时,烟量不段增加,无数的开发难题困扰着,光插件内的JS方法重写,就超过5次。 重写又重写,重写又有BUG,很多时候,真的无法解决了,我想过放弃,做这种插件首先不赚钱,还占用大量的时间。 每次想到放弃,我都想安慰自己"都开发了一大半了,放弃了就什么都没了,放弃就输了",正是我这种不屈服的精神,shearphoto终于完成了, shearphoto是我内心挣扎和汗水交织而成的作品,我不敢说shearphoto没有BUG,也不敢说shearphoto的代码没有问题。目前shearphoto还处于公测阶段,如果你发现有BUG或者某些代码写得不好,请第一时间联系我 QQ399195513 shearphoto是JS面向对象开发,绝对不含JQUERY,更不含第三方代码,更更没有第三方插件,全部采用原生JS和原生PHP开发。 为什么shearphoto不使用JQUERY,本人玩了JQUERY三年,对JQUERY一点好感也没有,反而造就了一批懒人,对技术的提升没有半点好处。 再者,JQUERY是一个类库,很多方法都帮你写好了,如果使用了JQUERY,那插件的功劳是不是要算上JQUERY一份呢,因此shearphoto在开发前就严重拒绝JQUERY驾入 以后的后续升级也不会有JQUERY的存在!shearphoto的原则:免费,开源,兼容目前所有浏览器,纯原生JS和PHP编写。 有人问:为什么只有PHP后端,没有JAVA和NET,很遗含告诉你,本人不懂JAVA和NET,但是以后的升级我会加上去的,当然你JAVA和NET玩得牛B,你可以在我的JS基础上编写。 目前shearphoto只支持PHP,如果你把JAVA或NET写了,可以发我一份,那么你就是shearphoto开发者之一!呵呵! shearphoto的应用范围: 1:网站会员头像截取,shearphoto能自由设置按比例截图或不按比例截图,也可以对图片旋转,在线拍照,你可以截取不同比例的,不同大小,各种旋转的图片。后台 前台均有设置接口,非常简单 2:商城商品图片切割,例如这个商品图片,有的图像部份我要去掉,那么shearphoto就能帮助你进行切割,又例如这个图片太大了,我想切小点,shearphoto也能帮你实现 3:在线美工切图等 shearphoto的用途非常广,shearphoto截图灵敏,拉伸或拖拽时都非常流畅,不像FLASH的截图插件那么卡,半于反应不过来,shearphoto易于二次开发,所有代码都是开源的HTML,JS PHP编写,二次非常简单 shearphoto的官方网站:www.shearphoto.com,网站有开发文档,以及shearphoto讨论区,大家可以在官网进行交流心得或者定制开发 你也可以加入shearphoto官方QQ群:461550716,分享与我进行交流。 shearphoto是属于大家的,shearphoto创造崭新截图环境,希望大家喜欢shearphoto 本程序版本号:shearphoto1.0 版本号:shearphoto1.0 shearphoto官网:www.shearphoto.com shearphoto官方QQ群:461550716 2015年8月7日 明哥先生

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值