jQuery图片裁剪插件jQuery-photoClip

所属分类:媒体,输入-图像,上传

 46100  142  查看评论 (57)
jQuery图片裁剪插件jQuery-photoClip ie兼容10

一款支持手势的裁图插件插件

由于目前网上很难找到一款支持手势的裁图插件,因此自己动手写了一个。为了快速开发,依赖了很多其他的开源插件。不过目前仅解决需求即可。

依赖插件

  • [jquery.transit.js] 插件 (v1.4 中已经移除了对该插件的依赖)

  • [iscroll-zoom.js] 插件(由于原插件的zoom扩展存在几个bug,所以建议使用demo中提供的iscroll-zoom.js文件,本人已经将这些bug修复)

  • [hammer.js] 插件 

  • [lrz.all.bundle.js] 插件

操作说明

在移动设备上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度

在PC设备上鼠标滚轮为缩放,每次双击则顺时针旋转90度

使用方法及参数配置简介

<div id="clipArea"></div>
<input type="file" id="file">
<button id="clipBtn">截取</button>
<div id="view"></div>
<script src="js/jquery-2.1.3.min.js"></script>
<script src="js/hammer.min.js"></script>
<script src="js/iscroll-zoom.min.js"></script>
<script src="js/lrz.all.bundle.js"></script>
<script src="js/jquery.photoClip.min.js"></script>
<script>
var clipArea = new bjj.PhotoClip("#clipArea", {
    size: [260, 260], // 截取框的宽和高组成的数组。默认值为[260,260]
    outputSize: [640, 640], // 输出图像的宽和高组成的数组。默认值为[0,0],表示输出图像原始大小
    //outputType: "jpg", // 指定输出图片的类型,可选 "jpg" 和 "png" 两种种类型,默认为 "jpg"
    file: "#file", // 上传图片的<input type="file">控件的选择器或者DOM对象
    view: "#view", // 显示截取后图像的容器的选择器或者DOM对象
    ok: "#clipBtn", // 确认截图按钮的选择器或者DOM对象
    loadStart: function(file) {}, // 开始加载的回调函数。this指向 fileReader 对象,并将正在加载的 file 对象作为参数传入
    loadComplete: function(src) {}, // 加载完成的回调函数。this指向图片对象,并将图片地址作为参数传入
    loadError: function(event) {}, // 加载失败的回调函数。this指向 fileReader 对象,并将错误事件的 event 对象作为参数传入
    clipFinish: function(dataURL) {}, // 裁剪完成的回调函数。this指向图片对象,会将裁剪出的图像数据DataURL作为参数传入
});
</script>

Destroy

clipArea.destroy();


相关插件-图像,上传

jQuery常用的图片滤镜

依赖于jQuery的图片滤镜插件,一个js,搞定图片常见的滤镜
  图像
 2173  24

鼠标图片放大插件-JQUERY ZOOM

jQuery Zoom是一款可以让我们将鼠标移动到图片上或者点击图片移动放大的插件。
  图像
 25297  54

100多个纯CSS3动画图标DEMO演示

100多个纯CSS3动画图标DEMO演示
  图像
 16327  126

canvas图片+文字合成

canvas图片+文字合成,实现照片合成效果,界面有点丑但是功能OK的。
  图像
 5918  36

讨论这个项目(57)回答他人问题或分享插件使用方法奖励jQ币

    贪睡之熊#伟 0
    2017/11/20 16:40:48

    我现在因为业务需求  想要获取到的截图的后缀是png的 但是定义outputType : "png" 不好用,返回的base64还是jpg的  求大神们谁知道怎么回事呀

    回复
    你看起来好像很好吃?╀ 0
    2017/11/20 14:28:08

    preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result);

    file_put_contents($savepath, base64_decode(str_replace($result[1], '', $base64)));PHP 亲测

    回复
    大荒唐 0
    2017/11/8 17:13:01

    ie10下报错 ie11不能穿jpg的图片(会弹窗格式错误) 有解么?

    回复
    1422920119 0
    2017/11/6 16:38:39

    嵌套ios客户端无法使用

    回复
    偏?の想?。 0
    2017/10/30 10:32:24

    这个挺好,但是样式如果能变化一下更好看了

    回复
    诉说,不完的过去 0
    2017/10/27 10:31:40

    IOS 设备中,如果的照片是竖屏拍摄的,虽然实际在网页中显示出的方向也是垂直,但图片数据依然是以横屏方向展示  怎么解决这个问题,我想要的是竖屏展示的

    回复
    My density 0
    2017/10/9 18:02:45
    在我的项目中为什么点击文件上传会很慢的呢?8s+
        Black and White°1
        2017/10/12 11:04:39

        给你的 input file 填上这个

        $('你的 input file').attr('accept','image/jpeg,image/png,image/jpg');
    回复
    Wymanmanmanman 0
    2017/8/24 16:38:23

    裁剪后怎么拿图片路径传给后台????

        时光与你皆回忆丶0
        2017/9/11 18:10:21

        这个问题你解决了吗  解决了给我普及一下  

        虎子0
        2017/11/6 18:00:59

        裁剪的时候生成一个base64码,这个只用来做预览用,裁剪的同时记录裁剪的坐标,x  y,把这两个坐标传给后台,在后台进行裁剪,裁剪完后把图片的服务器地址返回给前端,下次再进来就是这个裁剪后的图片了,直接把base64码传给后台不靠谱,太长了,后端会咬人的

        虎子0
        2017/11/6 18:20:52

        这个坐标在jquery.photoClip.js的426和427行,一个是x y 坐标,一个是缩放的比例,点击裁剪的时候保存一下这三个值就ok了

    回复
    不是路不平,而是你不行。 0
    2017/8/15 21:24:38

    在手机上你们支持缩放功能吗? 为什么我不打不可以啊!

    回复
    bζ ank ′ 0
    2017/8/13 17:02:32
    为什么安卓提示destroy  undefined? 回复
取消回复