`

如何实现javascript截图 jQuery插件imgAreaSelect使用详解

阅读更多
如何实现javascript截图 jQuery插件imgAreaSelect使用详解

为了使用户能自定义个人头像,需要提供一个对上传图片的截图功能,当前很多网站特别是SNS类网站都提供这样的功能,非常实用。主要实现的形式有两种,一种是flash截图,另一种就是javascript截图,两种方法各有秋千,关于Flash截图可以参考一下UcHome程序中头像上传功能,但这不是我要讨论的话题,我这里主要是如何实现javascript截图,利用jQuery的imgAreaSelect插件,轻松实现自定义头像[avatar]javascript截图功能。

一,准备:
两个JS文件
1,jquery.js 下载:jquery.js
2,jquery.imgareaselect.js 下载:jquery.imgareaselect.js[imgareaselect-0.6.2.zip]

二,使用

function preview(img, selection){
var scaleX = 100 / selection.width;
var scaleY = 100 / selection.height;

//动态小头像 获取当前选中框的宽度,高度,左边框,右边框
$('#biuuu + div > img').css({
width: Math.round(scaleX * 400) + 'px',
height: Math.round(scaleY * 300) + 'px',
marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
});
}

//加载小头像
$(document).ready(function () {
$('<div><img src="biuuu.jpg" style="position: relative;" /></div>')
.css({
float: 'left',
position: 'relative',
overflow: 'hidden',
width: '100px',
height: '100px'
})
.insertAfter($('#biuuu'));
});

//初始化加载
$(window).load(function () {
$('#biuuu').imgAreaSelect({ aspectRatio: '1:1', onSelectChange: preview });
});
三,调用

<div class="container">
<p>
<img id="biuuu" src="biuuu.jpg" title="biuuu" style="float: left; margin-right: 10px;" />
</p>
</div>
使用上面的javascript截图进行扩展可以实现很多的动态功能,jQuery提供的imgAreaSelect插件调用非常简单,其它相关应用可参考:imgAreaSelect Examples

使用jQuery插件imgAreaSelect实现javascript截图还是非常简单的,基本上就是一个动态的图像显示,获取源图片的位置和选取框的大小[宽度和高度],轻松实现javascript截图功能。

点我下载DEMO:javascript截图 imgAreaSelect插件demo
分享到:
评论
15 楼 gdw520 2013-06-25  

<div style="text-align: center; width: 50%; float: left;">
<img id="ladybug" src="ladybug.jpg" />
</div>

<form action="crop.php" method="post">

<input type="hidden" name="x1" value="" />

<input type="hidden" name="y1" value="" />

<input type="hidden" name="x2" value="" />

<input type="hidden" name="y2" value="" />

<input type="submit" name="submit" value="Submit" />

</form>

然后在初始化imgAreaSelect时,使用onSelectEnd()回调函数将选择后的数据赋给这些隐藏域,正如下面代码那样:

$(document).ready(function () {

$('#ladybug').imgAreaSelect({

onSelectEnd: function (img, selection) {

$('input[name="x1"]').val(selection.x1);

$('input[name="y1"]').val(selection.y1);

$('input[name="x2"]').val(selection.x2);

$('input[name="y2"]').val(selection.y2);

}

});

});

这样当点击"submit按钮"时,页面将上载到服务器,相应的坐标数据了。
得到坐标后
        /**
* 对图片裁剪,并把裁剪新图片保存
* @param srcPath 读取源图片路径
* @param toPath 写入图片路径
* @param x 剪切起始点x坐标
* @param y 剪切起始点y坐标
* @param width 剪切宽度
* @param height 剪切高度
* @param readImageFormat  读取图片格式
* @param writeImageFormat 写入图片格式
* @throws IOException
*/
    public void cropImage(String srcPath,String toPath,
    int x,int y,int width,int height,
    String readImageFormat,String writeImageFormat) throws IOException{  
        FileInputStream fis = null ;
        ImageInputStream iis =null ;
        try{  
            //读取图片文件
        fis = new FileInputStream(srcPath);
            Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);
            ImageReader reader = (ImageReader) it.next();
            //获取图片流
            iis = ImageIO.createImageInputStream(fis); 
            reader.setInput(iis,true) ;
            ImageReadParam param = reader.getDefaultReadParam();
            //定义一个矩形
            Rectangle rect = new Rectangle(x, y, width, height);
            //提供一个 BufferedImage,将其用作解码像素数据的目标。
            param.setSourceRegion(rect);
            BufferedImage bi = reader.read(0,param);               
            //保存新图片
            ImageIO.write(bi, writeImageFormat, new File(toPath));    
        }finally{
            if(fis!=null)
            fis.close();      
            if(iis!=null)
               iis.close();
        }
    }
14 楼 llll234eww 2013-03-20  
圣诞王子 写道
截图是显示出来了,但是怎么样保存呢

13 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢











12 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢










11 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢









10 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢








9 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢







8 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢






7 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢





6 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢




5 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢



4 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢


3 楼 zaishijieshang 2013-01-08  
zaishijieshang 写道
截图是显示出来了,但是怎么样保存呢

2 楼 zaishijieshang 2013-01-08  
截图是显示出来了,但是怎么样保存呢
1 楼 圣诞王子 2011-04-20  
截图是显示出来了,但是怎么样保存呢

相关推荐

    javascript截图 jQuery插件imgAreaSelect用法详解_.docx

    ### JavaScript截图 jQuery插件imgAreaSelect用法详解 #### 一、引言 在Web开发中,用户自定义头像的功能越来越受到重视。为了提供更好的用户体验,很多网站尤其是社交网络平台,都允许用户通过简单的操作来自定义...

    javascript截图 jQuery插件imgAreaSelect使用详解

    本文将详细介绍如何使用jQuery插件imgAreaSelect来实现JavaScript截图功能。 首先,要实现JavaScript截图,我们主要面临两种技术选择:Flash截图和JavaScript截图。Flash截图技术基于Adobe Flash技术实现,而...

    jQuery插件imgAreaSelect 实例代码

    **jQuery插件imgAreaSelect详解** `imgAreaSelect`是一个基于jQuery的插件,它提供了在网页上选择图片区域的功能,常用于图片裁剪或选取特定部分。这个插件易于集成,灵活性高,且适用于各种项目,特别是那些需要...

    JQuery插件imgAreaSelect_Demo

    **jQuery插件imgAreaSelect详解** 在Web开发中,我们经常需要实现图片的选取功能,例如裁剪、选区等操作。`imgAreaSelect`是一个非常实用的jQuery插件,它能够帮助开发者轻松地在网页上创建可自定义样式的图片选区...

    jquery.imgareaselect-0.9.2几种封装

    《jQuery.imgAreaSelect-0.9.2封装详解》 在网页开发中,图像选取功能是常见的需求之一,尤其在图像处理、编辑或上传场景中。jQuery.imgAreaSelect是一款非常实用的jQuery插件,用于实现图像区域选择的功能,它允许...

    jquery的imgareaselect插件

    《jQuery的imgAreaSelect插件详解与应用》 在网页设计和开发中,图像裁剪功能经常被用于用户上传头像、编辑图片等场景。jQuery的imgAreaSelect插件正是一款强大的图片选区工具,它提供了简单易用的API,帮助开发者...

    jquery图片裁剪插件imgareaselect

    《jQuery图片裁剪插件imgareaselect详解与实践》 在现代网页设计中,用户交互体验愈发重要,其中图片裁剪功能常用于头像编辑、图片上传预览等场景。jQuery图片裁剪插件imgareaselect便应运而生,它提供了简单易用的...

    jQuery插件imgAreaSelect基础讲解

    《jQuery插件imgAreaSelect基础详解》 imgAreaSelect是一个基于jQuery的插件,它的主要功能是让用户通过鼠标拖曳来选择图片中的任意部分,适用于图片裁剪、拖曳和编辑等场景。这个插件提供了丰富的自定义选项,使得...

    Jquery图片裁剪插件

    本篇将详细介绍jQuery图像上传裁剪插件的核心功能、工作原理以及如何使用imgareaselect这个特定的插件。 一、jQuery图片裁剪插件的基本概念 jQuery图片裁剪插件是基于JavaScript库jQuery构建的,它提供了交互式的...

    jQuery插件库

    **jQuery插件库详解** jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画设计和Ajax交互。它使得JavaScript编程变得更加简洁、高效。jQuery插件库则是这个强大工具集的延伸,提供了...

    jquery imgareaselect 使用利用js与程序结合实现图片剪切

    《使用jQuery imgareaselect 实现图片剪切的详解》 在现代网页设计中,用户交互体验变得越来越重要,图片裁剪功能就是其中一项常见需求。jQuery imgareaselect 是一个强大的JavaScript插件,它允许用户在网页上选择...

    imguploadncrop

    《基于jQuery.imgAreaSelect-0.9.10的截图上传功能实现及PHP后端处理详解》 在当今互联网时代,图像已经成为信息传递的重要载体,而用户上传图片并进行预览、裁剪的需求日益增多。"imguploadncrop"项目正是针对这一...

    jQuery图片割选择

    为了实现这一功能,开发者通常会利用JavaScript库,如jQuery,配合相应的插件,来创建图片割选功能。在这个场景中,我们关注的是一个名为“jQuery图片割选择”的程序,它利用jQuery库和imgareaselect插件,帮助用户...

    jQuery 图片裁切

    jQuery作为一款强大的JavaScript库,提供了许多插件来帮助开发者实现这一功能。本篇文章将深入探讨jQuery图片裁切的相关知识点,包括基本原理、实现步骤以及常用的jQuery图片裁切插件。 ### 1. 图片裁切的基本原理 ...

Global site tag (gtag.js) - Google Analytics