`
mingren135
  • 浏览: 72562 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WEB实战:头像裁剪

 
阅读更多

头像截图在sns的网站用到的非常多,一般分为以下几步来实现这样的功能

1)上传图片,保存到图片服务器(tfs)

2)前台js计算截图区域的坐标、宽、高,将数据提交后台

3)后台java按坐标处理原始图片,再将截取后的图片保存到图片服务器(tfs)

 

 先看看Jcrop截图的效果,它是jQuery的一个插件

 

参考http://deepliquid.com/projects/Jcrop/demos.php?demo=handler,代码如下:

    var showCoords = function(c){
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#w').val(c.w);
        $('#h').val(c.h);
    }	
    $('#jcrop_target').Jcrop({
            onChange:showCoords,
            onSelect:showCoords
    });

获取截图区域的坐标信息,这里需要考虑图片长宽的缩放比例,计算好准确的数值(x、y、w、h)传给服务器,由java类在原图的基础上进行裁剪。

1.根据图片File对象或者流,转换成BufferedImage对象

BufferedImage bi = ImageIO.read(file);
或者
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
BufferedImage bi = ImageIO.read(bis);

ImageIO还支持其它参数如下:

 

2.获取ImageWriter

private static ImageWriter getImageWriter(BufferedImage bi) {
    ImageWriter writer = null;
    ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(bi);
    Iterator iter = ImageIO.getImageWriters(type, "jpg");
    if (iter.hasNext()) {
        writer = (ImageWriter) iter.next();
    }
    return writer;
}

 

3.设置Writer参数

ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality((float) 1.0);
param.setSourceRegion(new Rectangle(x, y, width, height));

 

4.输出Image文件或者流

IIOImage iioImage = new IIOImage(bi, null, null);
ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
ImageOutputStream outputStream = ImageIO.createImageOutputStream(bos2);
writer.setOutput(outputStream);
writer.write(null, iioImage, param);

 

5.将流对象保存到文件系统

 

  • 大小: 26.1 KB
  • 大小: 11.3 KB
分享到:
评论

相关推荐

    Android 项目开发实战:头像上传

    4. 在Android上对图像进行裁剪: Android提供了`Intent.ACTION_IMAGE_CROP`用于裁剪图片,但这个Intent并不是所有设备都支持。因此,我们可能需要自定义裁剪界面,例如使用开源库`CropImage`。裁剪过程中,可以设置...

    小程序头像裁剪(原生)

    在微信小程序开发中,用户头像的选取与裁剪是一项常见的功能,特别是在社交类或个人中心设置类的应用中。"小程序头像裁剪(原生)"是一个专门为小程序设计的轻量级、高度可定制化的头像裁剪解决方案。这个功能使得...

    cropper头像裁剪(PC端)

    通过以上讲解,我们可以看出"cropper头像裁剪(PC端)"这个项目涉及到了前端开发中的多个重要技术点,包括Canvas图像处理、Base64编码、AJAX通信以及用户体验设计等,这些都是构建交互式Web应用的关键技能。...

    上传头像进行裁剪

    在IT行业中,用户界面设计是至关重要的一环,而“上传头像进行裁剪”功能则是许多网站和应用程序中常见的交互元素。这个功能允许用户选择个人照片,并根据自己的喜好或特定需求进行裁剪,以定制一个合适的头像。下面...

    flash+php头像裁剪上传.rar 代码实现

    3. 图片裁剪: 图片裁剪是图像处理的一部分,它允许用户从原始图像中选取特定区域并保存为新的图像。在PHP中,可以使用GD库或ImageMagick库来实现这个功能。这两个库都提供了裁剪图像的方法,例如GD库中的...

    Android 仿微信 头像裁剪

    在Android开发中,为了提供类似微信的用户体验,经常会遇到实现头像裁剪功能的需求。"Android 仿微信头像裁剪"是一个常见的实践项目,它允许用户选择一张图片,并通过手势操作来裁剪出合适的头像。这个项目的核心是...

    Android高仿微信头像裁剪

    在Android开发中,实现“高仿微信头像裁剪”是一项常见的需求,它涉及到用户界面设计、图片处理以及手势操作等多个技术领域。微信作为中国最流行的社交应用之一,其头像裁剪功能的设计和用户体验备受开发者关注。接...

    qq自定义头像裁剪

    QQ自定义头像裁剪是一项常见的功能,尤其在社交应用中非常普遍,用户可以自由选择并裁剪图片作为自己的头像。在这个过程中,涉及到的技术主要包括图像处理、图形用户界面(GUI)设计以及可能的异步操作。下面我们将...

    cropper头像裁剪(移动端)

    Cropper.js 是一款轻量级的JavaScript图像裁剪库,适用于Web前端项目。它提供了一个灵活的画布,用户可以在上面自由选择并裁剪图片。移动端的cropper是这个库的一个变种,专门优化了触摸操作和响应式设计,确保在...

    php+jquery 头像裁剪上传

    在IT行业中,头像裁剪上传功能是许多网站和应用中的常见需求,它允许用户自定义选择并裁剪图片作为个人头像。本项目利用PHP和jQuery技术实现了一个头像裁剪上传的功能,同时结合了Smarty模板引擎,使得前端与后端的...

    微信小程序头像裁剪功能

    在微信小程序中,用户经常需要上传头像并进行裁剪,以满足特定的尺寸要求。本文将详细讲解如何在微信小程序中实现头像裁剪功能。 首先,我们要知道,微信小程序提供了`wx.chooseImage`接口用于从本地相册或相机选取...

    头像选择+裁剪

    - 系统裁剪:此项目中提到的裁剪功能是基于系统提供的裁剪工具,而不是特定第三方库(如微信的裁剪工具)。这意味着裁剪界面和交互将遵循系统的默认设计,提供用户熟悉的体验。 - 裁剪参数:裁剪过程中,开发者...

    JavaScript头像裁剪上传组件

    JavaScript头像裁剪上传组件是Web开发中常见的一种功能,用于允许用户在前端选择并裁剪图片,然后将其上传到服务器。这个组件通常涉及到多个技术点,包括HTML5的File API、Canvas画布、图像处理算法以及AJAX异步通信...

    phonegap头像裁剪上传

    PhoneGap头像裁剪上传是移动应用开发中的一个常见需求,尤其在社交、个人资料设置等场景下。PhoneGap是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来构建跨平台的原生移动应用程序。本知识点主要围绕如何...

    浮士德头像裁剪2016福利版-web插件打包

    最近看回以前改的flash版头像裁剪,譬如,浮士德头像裁剪,发现了一些bug,还有一些不尽如意的地方,譬如,图片上传的方式没有遵守web的mutipart标准,整个组件没有组件化便于调用。当然,还有就是没有将源代码和可...

    三种不同方式实现头像裁剪

    在Android开发中,头像裁剪是常见的功能需求,用户可能需要从相册选择一张照片,然后进行裁剪以适应应用中的头像显示。这里我们将详细介绍三种不同的方式来实现这一功能,包括方形和圆形的裁剪。 1. 使用Android...

    头像裁剪上传.zip

    在IT行业中,尤其是在移动应用开发领域,用户头像的裁剪和上传是一项常见的功能需求。"头像裁剪上传.zip"这个压缩包文件显然包含了实现这一功能的相关代码或资源。以下将详细介绍关于“mui 图像头像裁剪上传”涉及的...

    android 圆形头像裁剪

    "android圆形头像裁剪"是一个常见的需求,它涵盖了从相册选择图片、图像裁剪以及将裁剪后的图片转换为圆形显示等多个技术点。下面我们将详细探讨这些知识点。 1. **相册选择**: 用户通常需要从手机相册中选取图片...

    java版上传头像裁剪

    【Java版上传头像裁剪】是一个典型的Web应用功能,主要涉及到的技术包括JSP、Servlet、JavaScript以及图像处理。在本项目中,用户可以上传个人头像,然后系统会对上传的图片进行裁剪,生成适合特定尺寸的头像。下面...

    flash头像裁剪工具

    在IT行业中,头像裁剪是一项常见的需求,特别是在社交媒体、论坛和在线社区等平台。"Flash头像裁剪工具"是这样一个解决方案,它允许用户自定义裁剪图像以创建适合自己需求的头像。这个工具的独特之处在于其能够生成...

Global site tag (gtag.js) - Google Analytics