头像截图在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.将流对象保存到文件系统
相关推荐
4. 在Android上对图像进行裁剪: Android提供了`Intent.ACTION_IMAGE_CROP`用于裁剪图片,但这个Intent并不是所有设备都支持。因此,我们可能需要自定义裁剪界面,例如使用开源库`CropImage`。裁剪过程中,可以设置...
在微信小程序开发中,用户头像的选取与裁剪是一项常见的功能,特别是在社交类或个人中心设置类的应用中。"小程序头像裁剪(原生)"是一个专门为小程序设计的轻量级、高度可定制化的头像裁剪解决方案。这个功能使得...
通过以上讲解,我们可以看出"cropper头像裁剪(PC端)"这个项目涉及到了前端开发中的多个重要技术点,包括Canvas图像处理、Base64编码、AJAX通信以及用户体验设计等,这些都是构建交互式Web应用的关键技能。...
在IT行业中,用户界面设计是至关重要的一环,而“上传头像进行裁剪”功能则是许多网站和应用程序中常见的交互元素。这个功能允许用户选择个人照片,并根据自己的喜好或特定需求进行裁剪,以定制一个合适的头像。下面...
3. 图片裁剪: 图片裁剪是图像处理的一部分,它允许用户从原始图像中选取特定区域并保存为新的图像。在PHP中,可以使用GD库或ImageMagick库来实现这个功能。这两个库都提供了裁剪图像的方法,例如GD库中的...
在Android开发中,为了提供类似微信的用户体验,经常会遇到实现头像裁剪功能的需求。"Android 仿微信头像裁剪"是一个常见的实践项目,它允许用户选择一张图片,并通过手势操作来裁剪出合适的头像。这个项目的核心是...
在Android开发中,实现“高仿微信头像裁剪”是一项常见的需求,它涉及到用户界面设计、图片处理以及手势操作等多个技术领域。微信作为中国最流行的社交应用之一,其头像裁剪功能的设计和用户体验备受开发者关注。接...
QQ自定义头像裁剪是一项常见的功能,尤其在社交应用中非常普遍,用户可以自由选择并裁剪图片作为自己的头像。在这个过程中,涉及到的技术主要包括图像处理、图形用户界面(GUI)设计以及可能的异步操作。下面我们将...
Cropper.js 是一款轻量级的JavaScript图像裁剪库,适用于Web前端项目。它提供了一个灵活的画布,用户可以在上面自由选择并裁剪图片。移动端的cropper是这个库的一个变种,专门优化了触摸操作和响应式设计,确保在...
在IT行业中,头像裁剪上传功能是许多网站和应用中的常见需求,它允许用户自定义选择并裁剪图片作为个人头像。本项目利用PHP和jQuery技术实现了一个头像裁剪上传的功能,同时结合了Smarty模板引擎,使得前端与后端的...
在微信小程序中,用户经常需要上传头像并进行裁剪,以满足特定的尺寸要求。本文将详细讲解如何在微信小程序中实现头像裁剪功能。 首先,我们要知道,微信小程序提供了`wx.chooseImage`接口用于从本地相册或相机选取...
- 系统裁剪:此项目中提到的裁剪功能是基于系统提供的裁剪工具,而不是特定第三方库(如微信的裁剪工具)。这意味着裁剪界面和交互将遵循系统的默认设计,提供用户熟悉的体验。 - 裁剪参数:裁剪过程中,开发者...
JavaScript头像裁剪上传组件是Web开发中常见的一种功能,用于允许用户在前端选择并裁剪图片,然后将其上传到服务器。这个组件通常涉及到多个技术点,包括HTML5的File API、Canvas画布、图像处理算法以及AJAX异步通信...
PhoneGap头像裁剪上传是移动应用开发中的一个常见需求,尤其在社交、个人资料设置等场景下。PhoneGap是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来构建跨平台的原生移动应用程序。本知识点主要围绕如何...
最近看回以前改的flash版头像裁剪,譬如,浮士德头像裁剪,发现了一些bug,还有一些不尽如意的地方,譬如,图片上传的方式没有遵守web的mutipart标准,整个组件没有组件化便于调用。当然,还有就是没有将源代码和可...
在Android开发中,头像裁剪是常见的功能需求,用户可能需要从相册选择一张照片,然后进行裁剪以适应应用中的头像显示。这里我们将详细介绍三种不同的方式来实现这一功能,包括方形和圆形的裁剪。 1. 使用Android...
在IT行业中,尤其是在移动应用开发领域,用户头像的裁剪和上传是一项常见的功能需求。"头像裁剪上传.zip"这个压缩包文件显然包含了实现这一功能的相关代码或资源。以下将详细介绍关于“mui 图像头像裁剪上传”涉及的...
"android圆形头像裁剪"是一个常见的需求,它涵盖了从相册选择图片、图像裁剪以及将裁剪后的图片转换为圆形显示等多个技术点。下面我们将详细探讨这些知识点。 1. **相册选择**: 用户通常需要从手机相册中选取图片...
【Java版上传头像裁剪】是一个典型的Web应用功能,主要涉及到的技术包括JSP、Servlet、JavaScript以及图像处理。在本项目中,用户可以上传个人头像,然后系统会对上传的图片进行裁剪,生成适合特定尺寸的头像。下面...
在IT行业中,头像裁剪是一项常见的需求,特别是在社交媒体、论坛和在线社区等平台。"Flash头像裁剪工具"是这样一个解决方案,它允许用户自定义裁剪图像以创建适合自己需求的头像。这个工具的独特之处在于其能够生成...