1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/

案例效果如下:

2.引入JCrop的js代码,具体要引入那些js可以参考JCrop案例:

3.编写的html代码如下:

<div 编写JS代码(注意这里的280和175表示的是我要一张长为280px像素高175px像素的图片):

//号字 红色 透明度0.5"; int x = 20; int y = 40;

* String imageFormat = "jpg"; String toPath =

* "D:/test/desk/alphaI2I-001.png";

*/

// imageObj.alphaWords2Image(srcImagePath, alpha, font, fontStyle,

// fontSize, color, inputWords, x, y, imageFormat, toPath); //设置文字水印

// imageObj.alphaImage2Image(srcImagePath, appendImagePath, alpha, x, y,

// 300, 200, imageFormat, toPath);//设置图片水印

/*

* String srcImagePath = "D:/test/fileSource/003.jpg"; int[] xPoints =

* {100,150,200,240,300}; int[] yPoints = {200,60,280,160,100}; int

* nPoints = 5; Color lineColor = Color.RED; String toPath =

* "D:/test/desk/polyline-003.jpg"; String imageFormat = "jpg";

* imageObj.drawPolyline(srcImagePath, xPoints, yPoints, nPoints,

* lineColor,toPath, imageFormat);//画折线

*/

/*

* int x1 = 50; int y1 = 100; int x2 = 600; int y2 = 150; Color

* lineColor = Color.BLUE; imageObj.drawLine(srcImagePath, x1, y1, x2,

* y2, lineColor,toPath, imageFormat);//画线段

*/

/*

* String srcImagePath = "D:/test/fileSource/002.jpg"; int x = 400; int

* y = 500; int width = 10; int height = 10; Color ovalColor =

* Color.RED; String imageFormat = "jpg"; String toPath =

* "D:/test/desk/point-002.jpg"; imageObj.drawPoint(srcImagePath, x, y,

* width, height, ovalColor, imageFormat, toPath);//画一个圆点

*/

/*

* List pointList = new ArrayList(); Point p1 = new Point(60,80);

* pointList.add(p1); Point p2 = new Point(160,80); pointList.add(p2);

* Point p3 = new Point(60,180); pointList.add(p3); Point p4 = new

* Point(260,180); pointList.add(p4); Point p5 = new Point(460,380);

* pointList.add(p5); String srcImagePath =

* "D:/test/fileSource/004.jpg"; int width = 10; int height = 10; Color

* ovalColor = Color.RED; String imageFormat = "jpg"; String toPath =

* "D:/test/desk/points-004.jpg"; imageObj.drawPoints(srcImagePath,

* pointList, width, height, ovalColor, imageFormat, toPath);//画出一组(多个)点

*/

/*

* int[] xPoints = {50,100,180,400,600}; int[] yPoints =

* {200,100,160,300,640}; int nPoints = 5; Color lineColor = Color.PINK;

* String srcImagePath = "D:/test/fileSource/003.jpg"; String toPath =

* "D:/test/desk/showpoints-003.jpg";

* imageObj.drawPolylineShowPoints(srcImagePath, xPoints, yPoints,

* nPoints, lineColor, width, height, ovalColor, toPath,

* imageFormat);//画折线并突出显示点

*/

/*

* String srcImagePath ="D:/test/fileSource/004.jpg"; int[] xPoints

* ={50,90,180,320,640}; int[] yPoints ={200,300,120,240,360}; int

* nPoints = 5; Color polygonColor = Color.PINK; float alpha = (float)

* 0.2; String imageFormat ="jpg"; String toPath

* ="D:/test/desk/drawalpha-004.jpg";

* imageObj.drawAndAlphaPolygon(srcImagePath, xPoints, yPoints, nPoints,

* polygonColor, alpha, imageFormat, toPath);

*/

/*

* String negativeImagePath = "D:/test/fileSource/001.jpg"; String

* additionImagePath = "D:/test/fileSource/006.png"; String toPath =

* "D:/test/fileSource/001.jpg"; long start =

* System.currentTimeMillis(); for(int i=0;i<1000;i++){ Random rand =

* new Random(); int x = rand.nextInt(1024); int y = rand.nextInt(768);

* imageObj.mergeBothImage(negativeImagePath, additionImagePath, x, y,

* toPath);//每次附加合并一张图片(循环若干次) } long end = System.currentTimeMillis();

* System.out.println(end-start);

*/

// 100 -- 45844

// 1000 -- 411156

/*

* 改进思路:将mergeBothImage方法 修改为mergeImageList方法,

* 通过将图片的坐标点装入list容器,然后再取出一来在方法中一次性与图片合并, 不再每次都打开底图、保存合成图片,关闭流

*/

// 叠加组合图像

/*

* String negativeImagePath = "D:/test/fileSource/001.jpg"; String

* toPath = "D:/test/fileSource/001.jpg"; String additionImagePath =

* "D:/test/fileSource/007.png"; List additionImageList = new

* ArrayList(); int count = 0; for(int

* i=0;i<100;i++){//为什么总是连续生成一样的随机数??? Random rand = new Random(); int x

* = rand.nextInt(1020); String xStr = x+""; int y = rand.nextInt(760);

* String yStr = y +""; String[] str = {xStr,yStr,additionImagePath};

* additionImageList.add(str); count++;

* //System.out.println(xStr+"   :     "+yStr); }

* System.out.println(count); long start = System.currentTimeMillis();

* imageObj.mergeImageList(negativeImagePath, additionImageList,"jpg",

* toPath); long end = System.currentTimeMillis();

* System.out.println(end-start);

*/

// 第一次 第二次 第三次

// 100张耗时(毫秒) --2003 1792 1869 1747 1871 1793

// 1000张耗时(毫秒) --15334 15200 15236 15903 16028 15545

// 10000张耗时(毫秒) --153010 153340 152673 154978 156506 154854

// 如果list.size()<=100,则调用此方法,

// 如果list.size()>100,则调用Jmagick的方法。

/*

* List iamgePathList = new ArrayList(); // D:/test/16a/

* iamgePathList.add("D:/test/16a/12384_2492.jpg");

* iamgePathList.add("D:/test/16a/12384_2493.jpg");

* iamgePathList.add("D:/test/16a/12384_2494.jpg");

* iamgePathList.add("D:/test/16a/12384_2495.jpg");

* iamgePathList.add("D:/test/16a/12384_2496.jpg");

* iamgePathList.add("D:/test/16a/12384_2497.jpg");

* iamgePathList.add("D:/test/16a/12384_2498.jpg");

* iamgePathList.add("D:/test/16a/12384_2499.jpg");

* iamgePathList.add("D:/test/16a/12384_2500.jpg");

* iamgePathList.add("D:/test/16a/12384_2501.jpg");

* iamgePathList.add("D:/test/16a/12384_2502.jpg");

*/

// String imageFormat = "jpg";

// String toPath = "D:/test/desk/16a_v1.jpg";

// imageObj.joinImageListHorizontal(iamgePathList, imageFormat, toPath);

/*

* String imageFormat = "jpg"; String[] pics1 =

* {"D:/test/16a/12384_2502.jpg","D:/test/16a/12384_2501.jpg",

* "D:/test/16a/12384_2500.jpg"

* ,"D:/test/16a/12384_2499.jpg","D:/test/16a/12384_2498.jpg",

* "D:/test/16a/12384_2497.jpg"

* ,"D:/test/16a/12384_2496.jpg","D:/test/16a/12384_2495.jpg",

* "D:/test/16a/12384_2494.jpg"

* ,"D:/test/16a/12384_2493.jpg","D:/test/16a/12384_2492.jpg"};

*

* String[] pics2 =

* {"D:/test/16a/12385_2502.jpg","D:/test/16a/12385_2501.jpg",

* "D:/test/16a/12385_2500.jpg"

* ,"D:/test/16a/12385_2499.jpg","D:/test/16a/12385_2498.jpg",

* "D:/test/16a/12385_2497.jpg"

* ,"D:/test/16a/12385_2496.jpg","D:/test/16a/12385_2495.jpg",

* "D:/test/16a/12385_2494.jpg"

* ,"D:/test/16a/12385_2493.jpg","D:/test/16a/12385_2492.jpg"};

*

* String[] pics3 =

* {"D:/test/16a/12386_2502.jpg","D:/test/16a/12386_2501.jpg",

* "D:/test/16a/12386_2500.jpg"

* ,"D:/test/16a/12386_2499.jpg","D:/test/16a/12386_2498.jpg",

* "D:/test/16a/12386_2497.jpg"

* ,"D:/test/16a/12386_2496.jpg","D:/test/16a/12386_2495.jpg",

* "D:/test/16a/12386_2494.jpg"

* ,"D:/test/16a/12386_2493.jpg","D:/test/16a/12386_2492.jpg"};

*

* String[] pics4 =

* {"D:/test/16a/12387_2502.jpg","D:/test/16a/12387_2501.jpg",

* "D:/test/16a/12387_2500.jpg"

* ,"D:/test/16a/12387_2499.jpg","D:/test/16a/12387_2498.jpg",

* "D:/test/16a/12387_2497.jpg"

* ,"D:/test/16a/12387_2496.jpg","D:/test/16a/12387_2495.jpg",

* "D:/test/16a/12387_2494.jpg"

* ,"D:/test/16a/12387_2493.jpg","D:/test/16a/12387_2492.jpg"};

*

* String[] pics5 =

* {"D:/test/16a/12388_2502.jpg","D:/test/16a/12388_2501.jpg",

* "D:/test/16a/12388_2500.jpg"

* ,"D:/test/16a/12388_2499.jpg","D:/test/16a/12388_2498.jpg",

* "D:/test/16a/12388_2497.jpg"

* ,"D:/test/16a/12388_2496.jpg","D:/test/16a/12388_2495.jpg",

* "D:/test/16a/12388_2494.jpg"

* ,"D:/test/16a/12388_2493.jpg","D:/test/16a/12388_2492.jpg"};

*

* String[] pics6 =

* {"D:/test/16a/12389_2502.jpg","D:/test/16a/12389_2501.jpg",

* "D:/test/16a/12389_2500.jpg"

* ,"D:/test/16a/12389_2499.jpg","D:/test/16a/12389_2498.jpg",

* "D:/test/16a/12389_2497.jpg"

* ,"D:/test/16a/12389_2496.jpg","D:/test/16a/12389_2495.jpg",

* "D:/test/16a/12389_2494.jpg"

* ,"D:/test/16a/12389_2493.jpg","D:/test/16a/12389_2492.jpg"};

*

* String toPath1 = "D:/test/desk/16a_v1.jpg"; String toPath2 =

* "D:/test/desk/16a_v2.jpg"; String toPath3 =

* "D:/test/desk/16a_v3.jpg"; String toPath4 =

* "D:/test/desk/16a_v4.jpg"; String toPath5 =

* "D:/test/desk/16a_v5.jpg"; String toPath6 =

* "D:/test/desk/16a_v6.jpg";

*

* String[] pics7 = {toPath1,toPath2,toPath3,toPath4,toPath5,toPath6};

* String toPath7 = "D:/test/desk/16a_h1.jpg";

*

* long start = System.currentTimeMillis();

* imageObj.joinImageListVertical(pics1, imageFormat, toPath1);

* imageObj.joinImageListVertical(pics2, imageFormat, toPath2);

* imageObj.joinImageListVertical(pics3, imageFormat, toPath3);

* imageObj.joinImageListVertical(pics4, imageFormat, toPath4);

* imageObj.joinImageListVertical(pics5, imageFormat, toPath5);

* imageObj.joinImageListVertical(pics6, imageFormat, toPath6);

*

* imageObj.joinImageListHorizontal(pics7, imageFormat, toPath7); long

* end = System.currentTimeMillis(); System.out.println(end-start);

*/

}

}

使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码的更多相关文章

  1. js多图预览及上传功能

    <%-- Created by IntelliJ IDEA. User: Old Zhang Date: 2018/12/27 Time: 11:17 To change this templa ...

  2. 原生js实现图片预览并上传

    最近主导的PC客户端网站重构工程告一段落,下一阶段开始给公司APP开发H5页面,技术栈是react.最近碰到一个需求:需要在H5页面上添加身份证照片,预览并上传.因为要兼容安卓4.4以下版本的手机,所 ...

  3. 用js实现预览待上传的本地图片

    js实现预览待上传的本地图片,代码如下: <form name="form5" id="form5" method="post" ac ...

  4. 基于“formData批量上传的多种实现” 的多图片预览、上传的多种实现

    前言 图片上传是web项目常见的需求,我基于之前的博客的代码(请戳:formData批量上传的多种实现)里的第三种方法实现多图片的预览.上传,并且支持三种方式添加图片到上传列表:选择图片.复制粘贴图片 ...

  5. H5-FileReader实现图片预览&Ajax上传文件

    图片预览 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  6. 如何预览将要上传的图片-使用H5的FileAPI

    这篇将要说的东西已经不新鲜了. 参考资料: Reading files in JavaScript using the File APIs (鉴于作者在美国, 我姑且认为作者母语是英语, 当然链接中有 ...

  7. 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)

    文章地址:http://www.cnblogs.com/rubylouvre/p/4597344.html 一.window.URL 在Chrome中,window.URL和window.webkit ...

  8. vue组件利用formdata图片预览以及上传《转载》

    转载修改 在项目中直接新建一个单文件页,复制一下代码即可       upload组件: <template> <div class="vue-uploader" ...

  9. vue组件利用formdata图片预览以及上传

    转载修改 在项目中直接新建一个单文件页,复制一下代码即可       upload组件: <template> <div class="vue-uploader" ...

  10. jquery+html5+canvas实现图片 预览 压缩 上传

    javascirpt (function($){ $.fn.extend({ aiiUpload:function(obj) { if(typeof obj !="object") ...

随机推荐

  1. 使用MD5SUM检查文件

    有不少网站提供下载文件的同时,提供了文件的MD5SUM的值.如何检查自己下载的文件与原文件一样呢?用md5sum的-c选项. 操作如下: 1.先新建一个文本文件,写入网站上提供的md5sum的值,空两 ...

  2. Android的log日志知识点剖析

    log类的继承结构 Log public final class Log extends Object java.lang.Object ↳ android.util.Log log日志的常用方法 分 ...

  3. 剑指Offer——咪咕笔试题+知识点总结

    剑指Offer--咪咕笔试题+知识点总结 情景回顾 时间:2016.10.09 15:00-16:30 地点:山东省网络环境智能计算技术重点实验室 事件:咪咕笔试 知识点总结 1.Html设置格式贵阳 ...

  4. memcached实战系列(一)memcached安装

    下载并安装Memcached服务器端 我用的是cenos6.5 64位系统. libevent是个程序库,它将Linux的epoll.BSD类操作系统的kqueue等事件处理功能封装成统一的接口,具有 ...

  5. java虚拟机 jvm 栈数据区

    java栈帧还是需要一些数据支持常量池的解析.正常方法的返回和异常的处理.大部分的java字节码指令需要进行常量池的访问,在栈帧数据区中保存着访问常量池的指针,方便程序访问java常量池.如下图所示: ...

  6. 插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52258434 在了解系统的activity,service,broa ...

  7. [ExtJS5学习笔记]第二十三节 Extjs5中表格gridpanel的列格式设置

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39665979 官方文档:http://docs.sencha.com/extjs/5. ...

  8. iOS9 中关闭ATS的方法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) iOS9中增加了系统的安全性,你会发现默认情况下打开非http ...

  9. 5. React 组件的协同使用 组件嵌套和Mixin

            组件是React的核心,构建大型项目时多个组件之间需要进行协同使用.可以从横向和纵向两个角度来实现组件的协同使用,纵向的协同使用就是组件嵌套,横向的协同使用就是Mixin(抽取公共方法 ...

  10. shell入门之流程控制语句

    1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...