jquery+java图片处理
Java中的图形图像处理和特征提取
Java中的图形图像处理和特征提取图形图像处理和特征提取是Java编程中的重要领域,它们在计算机视觉、图像识别、模式识别等应用领域中起着关键作用。
本文将介绍Java中的图形图像处理和特征提取的基本概念、常用算法和相关工具。
一、图形图像处理图形图像处理是指对图像进行改变、增强、重建等操作的一系列技术方法。
在Java中,图形图像处理通常涉及图像的读取、保存、调整、滤波、变换、合并等操作。
下面我们将介绍几种常见的图形图像处理技术及其在Java中的实现方式。
1.图像读取与保存:Java中可以使用ImageIO类来读取和保存图像文件。
例如,可以使用以下代码读取一张图片:```BufferedImage img = ImageIO.read(new File("image.jpg"));```然后可以使用以下代码将图像保存到文件中:```ImageIO.write(img, "jpg", new File("output.jpg"));```2.图像调整:图像的调整包括亮度、对比度、饱和度等的调整。
Java中可以使用RescaleOp类来实现图像的调整。
例如,以下代码将图像的亮度调整为原来的两倍:```float scaleFactor = 2.0f;RescaleOp op = new RescaleOp(scaleFactor, 0, null);BufferedImage adjustedImg = op.filter(img, null);```3.图像滤波:图像滤波是对图像进行模糊、锐化、边缘检测等操作。
Java中可以使用ConvolveOp类来实现图像的滤波。
例如,以下代码使用一个3x3的均值滤波器对图像进行模糊处理:```float[] matrix = { 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f,1/9f, 1/9f, 1/9f };ConvolveOp op = new ConvolveOp(new Kernel(3, 3, matrix));BufferedImage filteredImg = op.filter(img, null);```4.图像变换:图像变换是对图像进行旋转、缩放、翻转等操作。
jquery事件处理 综合案例
jquery事件处理综合案例以jquery事件处理综合案例为题,列举如下:1. 案例一:点击按钮显示隐藏元素在页面上放置一个按钮和一个元素,当点击按钮时,通过jquery事件处理实现隐藏或显示该元素。
2. 案例二:鼠标悬停显示提示信息在一个段落中的某个词语上添加鼠标悬停事件,当鼠标悬停在该词语上时,通过jquery事件处理显示一个提示框,提示该词语的含义或解释。
3. 案例三:输入框字符限制在一个输入框中,通过jquery事件处理限制输入的字符个数,当输入字符个数超过限制时,给出相应的提示。
4. 案例四:点击图片切换在页面上放置多个图片,通过jquery事件处理实现点击图片时,切换显示不同的图片。
5. 案例五:拖拽效果在页面上放置一个可拖拽的元素,通过jquery事件处理实现拖拽效果,即用户可以通过鼠标拖动该元素改变其位置。
6. 案例六:下拉菜单在页面上放置一个下拉菜单,通过jquery事件处理实现点击菜单项时,显示或隐藏相应的内容。
7. 案例七:表单验证在一个表单中的输入框中添加jquery事件处理,实现表单验证功能,例如验证邮箱格式、手机号码格式等。
8. 案例八:动态加载内容通过jquery事件处理实现动态加载内容,例如点击按钮时,通过ajax请求数据,并将返回的数据动态添加到页面中。
9. 案例九:轮播图通过jquery事件处理实现轮播图效果,即自动切换显示不同的图片或内容。
10. 案例十:选项卡切换在页面上放置多个选项卡,通过jquery事件处理实现点击选项卡时,显示相应的内容,隐藏其他内容。
这是一些常见的jquery事件处理综合案例,通过这些案例可以学习和理解jquery事件处理的基本用法和实际应用。
希望对你有所帮助。
java中bufferedimage的用法
文章标题:深度解析Java中BufferedImage的用法与应用一、介绍在Java编程中,BufferedImage是一个常用的类,用于处理图像的像素数据。
它提供了丰富的方法和功能,可以用于图像的读取、处理和保存,同时也支持图像的格式转换和像素操作。
在本文中,我们将深度探讨BufferedImage的用法与应用,并介绍其在Java图像处理中的重要性。
二、BufferedImage的基本用法1. BufferedImage的创建在Java中,我们可以通过ImageIO类的read()方法来创建一个BufferedImage对象,例如:```BufferedImage image = ImageIO.read(new File("image.jpg")); ```2. BufferedImage的基本操作BufferedImage类提供了getRGB()和setRGB()方法来读取和修改像素值,同时也支持获取宽度、高度和颜色模型等属性。
三、BufferedImage的高级功能1. 图像格式转换BufferedImage可以方便地进行图像格式的转换,例如将JPEG格式的图像转换为PNG格式:```BufferedImage originalImage = ImageIO.read(newFile("image.jpg"));ImageIO.write(originalImage, "png", new File("image.png"));```2. 像素级操作BufferedImage支持对图像进行像素级操作,例如修改像素颜色、绘制图形和文字等。
四、BufferedImage的应用场景1. 图像处理在图像处理应用中,BufferedImage可以用于图像的读取、编辑和保存,同时也支持图像的缩放、裁剪和旋转等操作。
2. 视频处理在实时视频处理中,BufferedImage可以用于处理视频帧的像素数据,例如视频流的转换、滤镜效果的应用和视频数据的提取等。
Java图像处理:使用Java 2D API实现图片处理
Java图像处理:使用Java 2D API实现图片处理引言:随着数字摄影技术的发展,我们每天都会拍摄大量的照片。
然而,有时候我们可能需要对这些照片进行一些处理,以使它们更加美观或符合特定的需求。
在本文中,我们将介绍如何使用Java 2D API来实现图片处理,帮助您更好地处理和优化您的图片。
第一部分:Java 2D API简介Java 2D API是Java平台中用于处理图形和图像的强大工具。
它提供了一组丰富的类和方法,使我们能够创建和操作各种图形对象,如线条、矩形、多边形和图像。
Java 2D API还支持图形渲染、颜色管理和图像转换等高级功能。
第二部分:加载和显示图片在开始处理图片之前,我们首先需要加载和显示图片。
Java 2D API提供了Image类来处理图像。
我们可以使用ImageIO类的静态方法read()来从文件中读取图像,并将其保存在一个Image对象中。
然后,我们可以使用Graphics类的drawImage()方法将图像绘制到指定的位置上。
第三部分:图片缩放有时候,我们可能需要调整图片的大小,使其适应特定的显示区域或满足特定的要求。
Java 2D API提供了AffineTransform类来处理图像的变换操作。
我们可以使用AffineTransform类的scale()方法来缩放图像。
通过指定缩放因子,我们可以按比例增加或减小图像的大小。
第四部分:图片旋转除了缩放,有时候我们还需要将图片旋转一定角度。
Java 2D API同样提供了AffineTransform类来实现图像的旋转操作。
我们可以使用AffineTransform类的rotate()方法来指定旋转的角度,并将其应用于图像。
第五部分:图片滤镜效果为了给图片增加一些特殊的效果,Java 2D API提供了一些内置的滤镜类。
我们可以使用这些滤镜类来对图像进行模糊、锐化、亮度调整等操作。
通过创建一个Filter对象,并将其应用于图像,我们可以很容易地实现这些效果。
图片模糊处理的Java实现
图⽚模糊处理的Java实现 String str = "2.jpg";File f = new File(str);try {BufferedImage image2 = ImageIO.read(f);int w = image2.getWidth();int h = image2.getHeight();int[] arr = image2.getRGB(0, 0, w, h, null, 0, w);int[][] xy = new int[h][w];for(int i = 0;i<h;i++) {for(int k=0;k<w;k++) {xy[i][k] = arr[i*k+k];}}int th =0;int tw =0;for(int i = 0;i<h;i++) {for(int k=0;k<w;k++) {th =i+1;tw = k+1;if((th == h)) {th = h-1;}if((tw == w)) {tw = w-1;}int temp1 = xy[Math.abs(i-1)][k] -xy[i][k];int temp2 = xy[th][k] -xy[i][k];int temp3 = xy[i][Math.abs(k-1)] -xy[i][k];int temp4 = xy[i][tw] -xy[i][k];xy[i][k] =(int)(xy[i][k] + (temp1+temp2+temp3+temp4)/4);};}for(int i = 0;i<h;i++) {for(int k=0;k<w;k++) {arr[i*k+k]=xy[i][k] ;}}image2.setRGB(0, 0, w, h, arr, 0, w);ImageIO.write(image2, "jpg", new File("22.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 其原理就是获取图⽚的像素值,其表⽰就是int 类型的⼀维数组,对于图⽚来说有固定的height 和width ,因此我们将该数组转化为 int [height][width] 的⼆维数组,我们假设该⼆维数组表⽰图像上⾯的各点值,通过算法取出该点上下左右的数值,对其做数学上⾯的取平均值或者,使⽤⽅差等数学⽅法,我们即可得到新的⼆维数组,再将该⼆维数组转给我们的⼀维数组,并通过setRGB ⽅法将像素值覆写,得到图⽚。
前端开发技术中的图片处理和滤镜效果实现方法
前端开发技术中的图片处理和滤镜效果实现方法在现代互联网时代,图片已经成为了网页设计中不可或缺的一部分。
而为了提升用户体验和页面美观度,前端开发人员常常需要对图片进行处理和添加滤镜效果。
本文将介绍一些常用的图片处理和滤镜效果的实现方法。
一、图片处理方法1. 图片压缩和优化在网站开发过程中,为了加快页面加载速度和减少带宽消耗,图片压缩和优化是非常必要的。
常用的图片压缩方法有使用图片编辑工具进行压缩、使用在线图片压缩网站进行优化等。
在压缩的过程中,需要权衡图片质量和效果,以保证在减小图片尺寸的同时,保持足够的清晰度。
2. 图片裁剪和缩放有时候我们需要根据设计要求对图片进行裁剪或者缩放操作。
可以使用图片编辑工具进行手动操作,也可以使用一些开源的JavaScript库来实现自动化的裁剪和缩放。
3. 图片滚动懒加载对于一些大型图片或者需要滚动才能看到的图片,为了加快页面加载速度,可以使用滚动懒加载技术。
即只在图片进入可视区域时才加载图片,避免不必要的带宽消耗和加载时间。
二、滤镜效果实现方法1. CSS滤镜CSS滤镜是一种在网页中实现滤镜效果的方法,常见的滤镜效果包括模糊、灰度、对比度调整等。
通过设置元素的样式属性,可以轻松地为图片添加滤镜效果。
例如,通过设置"filter: blur(5px);"可以给图片添加一个5像素的模糊效果。
2. Canvas滤镜Canvas是HTML5中新增的一个标签,可以通过JavaScript来操作像素数据,实现各种图形效果。
通过使用Canvas来处理图片,可以实现更加复杂和个性化的滤镜效果。
例如,可以使用getImageData方法获取图片的像素信息,然后根据需要进行像素点的处理,最后使用putImageData方法将处理后的像素数据绘制到Canvas上。
3. SVG滤镜SVG是一种用于描述二维矢量图形的语言,也可以用来创建滤镜效果。
与CSS和Canvas相比,SVG滤镜更加灵活和强大。
前端开发中的图片优化常见问题解决方法
前端开发中的图片优化常见问题解决方法在前端开发中,优化图片是提升网页性能和用户体验的重要一环。
良好的图片优化可以减少网页加载时间,减轻服务器压力,提高用户响应速度和整体网页质量。
然而,在实际的开发过程中,我们常常会遇到一些图片优化方面的问题。
本文将从图片格式、图片尺寸、缓存、懒加载以及响应式设计几个方面,介绍一些常见问题的解决方法。
1. 选择合适的图片格式在选择图片格式时,应根据图片的特点和使用场景选择合适的格式。
常见的图片格式有JPEG、PNG、GIF和WebP等。
JPEG适合存储照片和全彩图像,PNG适合存储无损透明度的图像,GIF适合存储动画图像,而WebP是一种新兴的图片格式,可以同时兼顾图像质量和文件大小。
根据具体需求,选择合适的图片格式可以减小图片文件大小,提高加载速度。
2. 压缩图片尺寸在前端开发中,经常会遇到大尺寸图片导致网页加载缓慢的问题。
为了解决这个问题,可以通过压缩图片尺寸来减小图片的文件大小。
可以通过调整图片的宽度和高度,或者使用CSS的background-size属性来实现。
此外,还可以借助工具如Photoshop或在线压缩工具,对图片进行压缩,以保证图像质量的同时减小文件大小。
3. 使用图片缓存在前端开发中,使用图片缓存是一种有效的优化方法。
通过在HTTP响应头中设置过期时间、修改文件名或使用版本号等方式,可以实现图片的缓存。
当用户第一次访问网页时,图片会被下载并缓存在用户本地。
当用户再次访问该页面时,浏览器会从本地缓存中加载图片,减少了对服务器的请求,提高了页面的加载速度。
4. 图片懒加载图片懒加载是一种流行的图片优化技术,可以延迟加载图片,只有当图片进入用户的可视范围时才进行加载。
当网页中包含大量图片时,懒加载可以有效减少初始加载量,提高用户的网页浏览体验。
可以借助于JavaScript库如zyload 等来实现图片的懒加载功能。
5. 响应式设计随着移动设备的普及,响应式设计已经成为了前端开发的重要趋势。
前端开发技术中的图片裁剪和缩放实现指南
前端开发技术中的图片裁剪和缩放实现指南在现代互联网时代,网站和移动应用的用户体验已经成为了开发者们关注的一个重要方面。
而其中一个重要的因素就是图片的处理和展示。
在前端开发中,如何实现图片的裁剪和缩放成为了一个值得研究的课题。
本文将介绍一些常见的图片裁剪和缩放技术,并给出实现指南。
一、图片裁剪图片裁剪是指从原始图片中选择感兴趣部分,并将其剪切出来。
在前端开发中,常见的图片裁剪方式有两种:CSS 裁剪和 JavaScript 裁剪。
1. CSS 裁剪CSS 裁剪是利用 CSS 属性来裁剪图片。
常用的 CSS 属性有 `clip` 和 `object-fit`。
`clip` 属性可以通过设置 `rect(top, right, bottom, left)` 来定义一个矩形区域,其中 `top`、`right`、`bottom` 和 `left` 分别表示矩形区域的上、右、下、左边界的位置。
通过设置 `clip` 属性为 `rect(top, right, bottom, left)`,可以将图片裁剪为指定的矩形区域。
`object-fit` 属性可以通过设置 `cover`、`contain`、`fill`、`none`、`scale-down`等值来控制图片的缩放和裁剪方式。
其中 `cover` 表示等比例缩放图片,使其充满容器,可能会有部分被裁剪;`contain` 表示等比例缩放图片,使其完全显示在容器内,可能会有留白;`fill` 表示不按比例缩放图片,直接填满容器;`none` 表示不缩放图片,保持原始尺寸;`scale-down` 表示选择 `none` 或者 `contain` 中较小的一个。
2. JavaScript 裁剪JavaScript 裁剪是通过操作 DOM 元素来实现图片裁剪。
常用的 JavaScript 库有`Cropper.js`、`Jcrop` 等。
`Cropper.js` 是一个功能强大的图片裁剪插件,提供了丰富的裁剪功能,可以根据用户的操作来实时裁剪图片。
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Base64(⼆进制)图⽚编码解析及在各种浏览器的兼容性处理IE浏览器⽬前最⾼的版本是v11,⽽微软放弃了IE,转向新的浏览器开发,并取名为Edge。
base64图⽚在IE9及以后的图⽚均能显⽰没有问题,⽽Firefox, Chrome, Safari等⾮IE浏览器都能正常显⽰,所以显得IE浏览器⽐较low。
那么兼容性究竟应该怎么来处理呢?分三种情况。
(1)IE9+、Firefox、Chrome、Safari等浏览器base64图⽚在HTML⾥的标准写法是:<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/ha6aYeDr18DWornKrlX+/sP/9k=" /><div style="width:100px; height:100px; background-image:url('data:image/jpeg;base64, /9j/4AAQSkZJRgABAQEASABIAAD/ha6aYeDr18DWornKrlX+/sP/9k=')"></div>javascript给img元素的src属性赋值或是给其他元素的backgroundImage属性赋值都可以正确的显⽰图⽚。
其格式为 data:{mimeType};base64,[code]{mimeType}是指图⽚的格式类型,⼀般来说,JPG⽂件填写image/jpeg, GIF⽂件填写image/gif, PNG⽂件填写 image/png。
[code]是指图⽚⼆进制转换成base64的字符串。
(2)IE6、IE7浏览器低版本的IE浏览器不⽀持img的src属性⽤data:image/jpeg这样写,但是我们可以使⽤mhtml调⽤附件资源的形式来处理图⽚。
格式如下:<!--Content-Type: multipart/related; boundary="imagedata"--imagedataContent-Type: image/jpegContent-Location: showimgContent-Transfer-Encoding: base64/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA --imagedataContent-Type: image/jpegContent-Location: img2Content-Transfer-Encoding: base64R0lGODlhSgBFAPcAAIwBAcydnJRKSuYAALt6eownJ/u1nbUBAfFHROoZGOm+oqFeX/KDeI0ZGfvJsdZ2cN+9vd4AAM2Tg5M5Ou+dm8wAAO03MKYBAbZLSv7bufedhOBaWeLLy7pzaucICPRuat6fj4YSEaQmJZ4aF9uwsOB6ef/MzOknIqM5Ofeqor4AALVYWPLE -->(3)IE8浏览器ie8浏览器分两种情况。
如何使用Java进行图像和视频处理
如何使用Java进行图像和视频处理Java作为一种跨平台、面向对象的编程语言,具有广泛的应用范围。
其中,图像和视频处理是Java的重要应用之一。
本文将从Java实现图像和视频处理的原理、Java图像处理框架、Java视频处理框架、示例程序等多个方面,介绍如何使用Java进行图像和视频处理。
一、Java实现图像和视频处理的原理Java中实现图像和视频处理的原理是基于Java图像处理(Java Image Processing)API和Java视频处理(Java Video Processing)API。
其中,Java Image Processing API是Java SE内置的API,主要包括Java 2D API、Java Advanced Imaging API等。
Java Video Processing API则是在Java SE的基础上,结合开源库和第三方插件进行实现的。
Java图像处理和视频处理的流程如下:1、读取图片或视频文件,生成图像或视频对象。
2、对图像或视频进行处理,如裁剪、缩放、旋转、调整亮度、对比度等。
3、将处理后的图像或视频输出到文件或显示在界面上。
二、Java图像处理框架1、Java 2D APIJava 2D API是Java内置的2D图形绘制API,提供了2D图形绘制、图像处理、字体管理、打印等功能。
其中,Java 2D API的核心是Graphics2D类,可以用来绘制图像、文本、形状等。
Java2D API还提供了一系列类,如BufferedImage、AlphaComposite、GradientPaint等,可以用来实现各种图形绘制和图像处理。
2、Java Advanced Imaging APIJava Advanced Imaging API是一个用于图像处理和分析的Java API,可以进行高级的图像处理和分析,包括缩放、旋转、镶嵌、滤波、变形、分析等。
java项目案例
java项目案例随着传统的计算机编程语言的不断发展,Java语言在计算机世界已经被称为非常普遍的计算机编程语言之一。
它的使用也是计算机领域中最受欢迎的语言之一,几乎可以应用到任何编程项目中。
本文就介绍一个采用Java语言编写的实际项目案例,其中用到了Java语言的各种功能,以便于读者对Java语言有一个更全面的认识。
该项目案例是基于Java语言实现的一个移动端应用程序,用于实现图片识别功能。
本项目主要使用的技术是Java语言的图像处理技术。
这是一个大型的开源项目,在开发过程中,采用了面向对象编程(OOP)的方法,主要目的是将图像处理技术与用户界面交互技术结合在一起,实现一个可以操作图像,并能够根据图像上的特征进行识别的程序。
首先,介绍一下开发过程中用到的具体技术:(1)用于处理图像的Java图像处理库(JIMP):该库提供了一系列的图像处理操作,比如图像的转换、旋转、滤镜、添加水印等功能。
(2)云端图像处理服务:使用了一个云端服务的API,用于实现复杂的图像处理操作,比如图像的模糊、锐化、亮度调整等。
(3)计算机视觉检测技术:使用了一款针对图像处理任务的计算机视觉检测技术,以便于侦测、识别、分类图像上出现的物体和文字。
(4)Android移动端平台:基于Android平台的应用开发环境,用于将程序编译、测试和发布到手机端。
然后,详细介绍一下开发者采用了Java语言来完成上述功能:(1)首先,使用Java图像处理技术来实现图像的处理,例如图像的缩放、旋转、调整亮度等。
(2)然后,使用了云端服务,完成复杂的图像处理工作,比如模糊、锐化、添加水印等工作。
(3)接着,使用计算机视觉检测技术,实现图像的识别、分类和检测功能。
(4)最后,使用Android移动端平台来实现应用的编译、测试和发布。
以上就是使用Java语言开发的项目案例,实现了一种基于移动端的图像识别的程序。
由此可见,Java语言的功能极其强大,可以满足各种不同的应用场景,同时,它的可移植性也使它更加适合移动端程序开发。
jQuery实现图片轮播
JQuery图片轮播(类似flash)效果图:以下为完整代码*********************************************************************<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>jQuery图片轮播demo</title><style type="text/css">/* 自定义焦点容器样式大小随自己的网站整体风格自定义调整*/.CustomSlide {width: 98%;height: 252px;position:relative;left: -5px;}/* 幻灯容器这里的样式选择器除高手外不要随便更改样式随自己的网站风格调整*/.slides div,ul, ol, li, h1,h2, p{margin:0;padding:0}.slides div{font-size:0.8em;letter-spacing:1px;font-family:"微软雅黑"; line-height:1.2; padding:0 2px 0 0;}.slides a{color:#047;text-decoration:none}.slides a:hover{color:#a40000;text-decoration:none}.slides h1{font-size:1em; font-weight:normal; line-height:1.8em}.slides h1 a{background:#CFF; padding:2px 3px; text-decoration:none}.slides h1 a:hover{background:#eee; text-decoration:underline}.slides h2{font-size:1em; font-weight:normal; color:#a40000; margin:1em auto}.slides ul,li{list-style:none}/* 幻灯样式同上选择器不要随便更改样式自定义*/.slides { position:relative; overflow:hidden; width:990px; height:250px; border:3px solid #eee; margin:0; }.slide-pic{ overflow:hidden;width:990px}.slide-pic img{ width:988px; height:248px;border:1px solid #E4E4E4}.slide-pic li { display:none}.slide-pic li.cur { display:block}.slide-li { position:absolute; left:0; bottom:0; }.slide-li li { float:left; width:197px; height:30px; line-height:30px; margin-right:1px; text-align:center}.slide-li a:visited,.slide-li a:link { display:block; width:196px; height:30px;font-size:14px; color:#FFF}.slide-li .cur a:visited, .slide-li .cur a:link, .slide-li a:hover { color:#333;text-decoration:none}.op li { background:#666; opacity: 0.6; filter:alpha(opacity=60)}.op li.cur { background:#99C914}.slide-txt span { display:none}</style><script type="text/javascript"src="/ajax/libs/jquery/1.4.2/jquery.min.js"></script></head><body><!--*幻灯开始*--><div class="CustomSlide"><div class="slides" align="center"><ul class="slide-pic"><li><a href="/"><img src="images/slide1.jpg" alt="" /></a></li><li class="cur"><a href="/"><img src="images/slide2.jpg" alt="" /></a></li><li><a href="/"><img src="images/slide3.jpg" alt="" /></a></li><li><a href="/"><img src="images/slide4.jpg" alt="" /></a></li><li><a href="/"><img src="images/slide5.jpg" alt="" /></a></li></ul><ul class="slide-li op"><li></li><li class="cur"></li><li></li><li></li><li></li></ul><ul class="slide-li slide-txt"><li><a href="">标题一</a></li><li class="cur"><a href="">标题二</a></li><li><a href="">标题三</a></li><li><a href="">标题四</a></li><li><a href="">标题五</a></li></ul></div></div><!--//end--><!-- 如果网站头部没有导入JQ库也要以在这句注释的位置上导入但同样要注意JQ多次导入的问题见下面的说明--><script>//幻灯渐隐开始var defaultOpts = {interval: 8000, //当前画面停留时间fadeInTime: 1000, //新画面切入时间fadeOutTime: 800 //当前画面离开时间两张图片过渡时间为切入和离开的总和};//Iterate over the current set of matched elementsvar _titles = $("ul.slide-txt li");var _titles_bg = $("ul.op li");var _bodies = $("ul.slide-pic li");var _count = _titles.length;var _current = 0;var _intervalID = null;var stop = function() {window.clearInterval(_intervalID);};var slide = function(opts) {if (opts) {_current = opts.current || 0;} else {_current = (_current >= (_count - 1)) ? 0 : (++_current);};_bodies.filter(":visible").fadeOut(defaultOpts.fadeOutTime,function() {_bodies.eq(_current).fadeIn(defaultOpts.fadeInTime);_bodies.removeClass("cur").eq(_current).addClass("cur");});_titles.removeClass("cur").eq(_current).addClass("cur");_titles_bg.removeClass("cur").eq(_current).addClass("cur"); }; //endof slidevar go = function() {stop();_intervalID = window.setInterval(function() {slide();},defaultOpts.interval);}; //endof govar itemMouseOver = function(target, items) {stop();var i = $.inArray(target, items);slide({current: i});}; //endof itemMouseOver_titles.hover(function() {if ($(this).attr('class') != 'cur') {itemMouseOver(this, _titles);} else {stop();}},go);//_titles_bg.hover(function() { itemMouseOver(this, _titles_bg); }, go); _bodies.hover(stop, go);//trigger the slideboxgo();var slideX = {_this: $('.catalog .imgbox'),_btnLeft: $('.catalog .left'),_btnRight: $('.catalog .right'),init: function() {slideX._btnLeft.click(slideX.slideLeft);slideX._btnRight.click(slideX.slideRight);},slideLeft: function() {slideX._btnLeft.unbind('click', slideX.slideLeft);for (i = 0; i < 2; i++) {slideX._this.find('li:last').prependTo(slideX._this);}slideX._this.css('marginLeft', -224);slideX._this.animate({'marginLeft': 0},500,function() {slideX._btnLeft.bind('click', slideX.slideLeft);});return false;},slideRight: function() {slideX._btnRight.unbind('click', slideX.slideRight);slideX._this.animate({'marginLeft': -224},500,function() {slideX._this.css('marginLeft', '0');for (i = 0; i < 2; i++) {slideX._this.find('li:first').appendTo(slideX._this) }slideX._btnRight.bind('click', slideX.slideRight);});return false;}}$(document).ready(function() {slideX.init();})$(document).ready(function() {var newTime = new Date();var newTime = newTime.getTime();var $imgTmp = $('#topromotion').find('img:first');var osrc = $imgTmp.attr('src');$imgTmp.attr('src', osrc + '?' + newTime);});</script><center><font size="5px" color="#F00">JQuery 幻灯</font></center></body></html>。
Java图片处理之获取gif图一帧图片的两种方法
Java图⽚处理之获取gif图⼀帧图⽚的两种⽅法前⾔本⽂主要给⼤家介绍了关于Java获取gif图⼀帧图⽚的相关内容,分享出来供⼤家参考学习,下⾯话不多说了,来⼀起看看详细的介绍吧。
⼀、Java原⽣代码实现gif获取⼀帧图⽚先看测试代码:public static void main(String[] args) {/*这⼉填写你存放要缩⼩图⽚的⽂件夹全地址*/String src = "c:/5.gif" ;/*这⼉填写你转化后的图⽚存放的⽂件夹*/String tar = "c:/5_frame_2.jpg";// 获取GIF图⽚⼀帧图⽚getGifOneFrame(src, tar, 2);}核⼼代码:FileImageInputStream in = null;FileImageOutputStream out = null;try {in = new FileImageInputStream(new File(src));ImageReaderSpi readerSpi = new GIFImageReaderSpi();GIFImageReader gifReader = (GIFImageReader) readerSpi.createReaderInstance();gifReader.setInput(in);int num = gifReader.getNumImages(true);// 要取的帧数要⼩于总帧数if (num > frame) {ImageWriterSpi writerSpi = new GIFImageWriterSpi();GIFImageWriter writer = (GIFImageWriter) writerSpi.createWriterInstance();for (int i = 0; i < num; i++) {if (i == frame) {File newfile = new File(target);out = new FileImageOutputStream(newfile);writer.setOutput(out);// 读取读取帧的图⽚writer.write(gifReader.read(i));return true;}}}主要是创建GIFImageReader对象,然后获取要取的那⼀帧图⽚使⽤im4java调⽤ImageMagick获取gif⼀帧图⽚先看测试代码public static void main(String[] args) throws Exception {String src = "c:/test2.gif";String target = "c:/test2_frame_1.jpg";getGifOneFrame(src, target, 1);System.out.println("完成");}主要实现:/*** 获取GIF图⽚⼀帧图⽚ - 同步执⾏* @param src 源图⽚路径* @param target ⽬标图⽚路径* @param frame 获取第⼏帧* @throws Exception*/public static boolean getGifOneFrame(String src, String target, int frame) throws Exception {if(!src.endsWith(".gif")){return false;}createDirectory(target);IMOperation op = new IMOperation();op.addImage(src + "["+frame+"]");op.addImage(target);ConvertCmd cmd = (ConvertCmd) getImageCommand("convert");cmd.setAsyncMode(false);cmd.run(op);return true;}总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
如何在JavaScript中实现图片的裁剪和旋转
如何在JavaScript中实现图片的裁剪和旋转在JavaScript中,可以使用HTML5的canvas元素和相应的API 来实现图片的裁剪和旋转。
下面将详细介绍如何使用canvas和JavaScript实现这两个功能。
1.图片裁剪图片裁剪是指将图片的一部分或者多个部分切下来,只保留需要的部分。
在JavaScript中,可以使用canvas的drawImage()方法来实现图片裁剪。
首先,我们需要创建一个canvas元素,并获取它的2D上下文,代码如下:```javascriptvar canvas = document.createElement("canvas");var ctx = canvas.getContext("2d");```接下来,我们可以使用Image对象来加载图片,并在加载完成后绘制到canvas上。
代码如下:```javascriptvar image = new Image();image.onload = function() {//设置要裁剪的区域var sx = 100; //起始X坐标var sy = 100; //起始Y坐标var swidth = 200; //裁剪宽度var sheight = 200; //裁剪高度var dx = 0; //目标区域起始X坐标var dy = 0; //目标区域起始Y坐标var dwidth = 200; //目标区域宽度var dheight = 200; //目标区域高度//绘制裁剪后的图片到canvas上ctx.drawImage(image, sx, sy, swidth, sheight, dx, dy, dwidth, dheight);};image.src = "image.jpg"; //替换为你自己的图片路径```上述代码中,我们首先创建了一个Image对象,并给其指定一个onload事件处理函数。
JAVA对JPEG图片进行处理
在某些网站,我们往往需要上传一些图片资料。
但随着高分辨率DC的普及,上传的图片容量会很大,比如300万象素DC出来的文件基本不下 600K。
为了管理方便,大家可能不愿意每次都用ACDsee修改它,而直接上传到服务器。
但是这种做法在客户端看来就没有那么轻松了,对于拨号上网的用户简直是一场恶梦,虽然你可以在图片区域设置wide和high!问题的解决之道来了!我们可以在类中处理一张大图,并缩小它。
前提是需要JDK1.4,这样才能进行处理。
按以下方法做:过程很简单,从本地磁盘读取文件Order005-0001.jpg(2032*1524),变成Image对象src,接着构造目标文件tag,设置tag的长宽为源图的一半,对tag 进行编码,输出到文件流out,最后关闭文件流。
还有一些问题需要说明:第一,目前只能支持JPG(JPEG)、GIF、PNG三种格式。
第二,对于源图的容量有限制,最好不要超过1M,否则会抛内存不足的错误,不过我试验过1.8M的源图,可以成功,但是也很容易抛内存不足。
引用一位前辈的话:图象运算本身是密集型运算,需要大量的内存存放象素值。
我用VC试了一下,4M的图象也有问题,而且越是压缩比大的图片在内存中还原成 BITMAP时需要的内存越大。
解决的方法,可以重写编码类,先开一定的内存,然后一段一段编码写到临时文件中,输出的时候再一段一段读出来。
或利用 nio的内存映象来操作。
JavaMail由于采用了Builder模式,先生成一个邮件的每一个部分,然后合并成一个完整的邮件对象,这样每个构件都要先生成到内存中,你如果发送一个上百兆的附件,那么在构造Part时肯定内存溢出,所以我就改写了BodyPart 的构造,让他和一个临时文件关联,然后用临时文件保存Part而不是构造在内存中,这样任义大小的附件(硬盘能放得下为限)都可以发送了。
最后,如果大家对图像处理有更高的要求,不妨关注一下开源项目。
JAVA图像处理详解
JAVA图像处理详解2007-08-10 17:03如果你对图像处理感兴趣,而且需要使用GIF、JPEG和PNG以外的其它图像格式,或者希望改善JPEG图像处理的性能但不知道到哪里寻找适当的方法,或者需要通过几何运算(包括非线性变换)来处理图像,不必再为此苦恼了,答案就在这里——来自Sun公司的Java高级图像处理API和JAI图像I/O API 1.0 RC。
JAI API是Java Media API的一部分,与之相伴的还包括Java 2D API、Java 3D API、Java Speech API和其他一些API。
Java高级图像处理API是作为Java规范请求(JSP)34的一部分而开发的,是对J2SE version 1.3+版的扩展,主要用于处理图像。
最初发布的版本是1.0,JDC(Java Developer Connection)提供了一个预览版1.1.2 beta。
(最新进展情况请查阅README.html文件。
)与AWT 和Java 2D相比,JAI API提供了更丰富的图像处理,包括对许多通用图像操作的内在支持。
不过本文的目的不是讨论JAI API,而是伴随这些API但分离到它自己的可安装库中的一组图像读写器(codec)类,即Java高级图像处理图像I/O工具1.0 RC。
该RC提供了可以插接到J2SE 1.4的图像I/O框架上的一些功能。
作为JSR-15一部分而开发的图像I/O API提供了一个支持不同图像格式的可插拔框架。
标准J2SE 1.4版本身支持GIF、JPEG和PNG图像格式,而JAI图像I/O RC则提供了更多主流图像格式的编码解码器。
只要加上针对操作平台的适当版本,以前开发的应用程序就可以处理这些新的图像格式。
要理解JAI图像I/O工具的使用,需要首先了解图像I/O库。
在安装和介绍图像I/O工具包之前,我们先看一看图像I/O库。
图像I/O库图像I/O库是J2SE 1.4的标准API,放在javax.imageio包内。
前端开发技术中的响应式图像处理方法
前端开发技术中的响应式图像处理方法随着移动设备的普及,响应式网页设计成为了前端开发的重要一环。
而其中的一个关键问题就是如何处理图像的适配。
本文将介绍一些前端开发中常用的响应式图像处理方法,帮助开发者高效地解决这一问题。
一、图像压缩与优化在实现响应式网页设计时,图像的压缩和优化是至关重要的一步。
首先,我们可以通过压缩图像文件的质量和尺寸来减小图像的大小。
利用压缩软件或在线工具可以帮助我们实现这一步骤。
其次,我们还可以使用一些工具和插件来进行图像优化,如图片无损压缩、使用适应屏幕的图像格式等等。
这些优化方法可以使图像达到更好的显示效果,并提高网页的加载速度。
二、媒体查询媒体查询是前端开发中常用的一种响应式图像处理方法之一。
通过媒体查询,我们可以根据不同的屏幕尺寸,为不同的设备加载不同的图像。
通过设定不同的CSS样式表以及使用@media规则,我们可以实现在不同设备上加载不同尺寸的图像,从而适配不同屏幕的需求。
三、视网膜图像(Retina Images)Retina屏幕的普及也带来了对图像显示效果的要求提高。
为了在Retina屏幕上展示高清晰度的图像,我们可以采用视网膜图像的处理方法。
这种方法可以通过提供高像素密度的图像,并通过CSS中的media查询来加载不同尺寸的图像,从而在Retina屏幕上展示清晰锐利的图像效果。
四、切片和拼接(Image Slicing and Sprites)切片和拼接是一种常见的响应式图像处理方法。
通过将一个大的图像切割成多个小图像,然后通过CSS的background属性来拼接这些小图像,我们可以实现在不同设备上加载不同部分的图像,以适应各种屏幕尺寸。
这种方法既可以减小文件的大小,又可以提高图像的加载速度,从而提升用户体验。
五、图像懒加载(Lazy Loading)图像懒加载是一种在响应式网页设计中常用的优化方法。
通过将图像的加载推迟到用户需要查看的时候,可以减少网页的加载时间。
java中图片上传+预览+剪切解决方案
java中图片上传+预览+剪切解决方案我们在很多网站可以看到上传图片后可以剪切,下面我来介绍一个java中图片上传+预览+剪切解决方案吧,有需要的朋友可参考参考。
表现流程如下:步骤1:点击浏览按钮选中图片-------1------>onchange事件把图片上传到服务器-------2----->图片路径回传步骤2:进入切割图片------3----->切割,取得坐标,长度--------4---->传给服务器---------->后台切割产生新图片-----5------>回传新图路径步骤3:页面截图预览步骤1:file标签:onchange事件调用的js方法:ajaxFileUpload利用iframe模拟了ajax上传文件。
url:"uploadPreviewImage.html" 就是后台地址,(本人使用的是spring mvc),success:function (data , status),上传成功后调用的js中,$('#photo').imgAreaSelect方法是使用了imgAreaSelect插件来初始化截图界面。
官网地址:/projects/imgareaselect/关于ajaxFileUpload的api可以查看官网,开始的时候我使用的是网上随便下的一个js,发现一直调不同,最后换了官网的,才ok。
var f=document.getElementById("advImage").value;if(!/.(gif|jpg|jpeg|png|JPG|PNG)$/.test(f)){alert("图片类型必须是.jpeg,jpg,png中的一种")return false;}// 利用ajaxFileUpload js 插件上传图片$.ajaxFileUpload({url:"uploadPreviewImage.html",secureuri:false,fileElementId:"advImage",dataType:"json",success:function (data , status) {//上传成功后,直接跳出截图框,使用imgAreaSelect插件piso = $('#photo').imgAreaSelect({x1: 0, y1: 0, x2:480 , y2: 520 ,onSelectEnd: preview,resizable: false,instance: true,persistent:true});// 这个方法是现实一个div,托住截图框showCutImage();// 一些变量在页面的隐藏input的设置document.getElementById("photo").src = data.tempPath;document.getElementById("currentPath").valu e = data.tempPath;},error:function (data, status, e) {//alert("图片上传失败,请重新选择图片");}});return false;}// 截图选中后调用方法,保存好起始坐标和宽高function preview(img, selection){$('#x1').val(selection.x1);$('#y1').val(selection.y1);$('#x2').val(selection.x2);$('#y2').val(selection.y2);$('#w').val(selection.width);$('#h').val(selection.height);} uploadPreviewImage方法,把文件方法零时文件夹下:public ModelAndView uploadPreviewImage(HttpServletRequest request, HttpServletResponse response) throws IOException{User user = (User)request.getSession().getAttribute("user");MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;MultipartFile image = multipartRequest.getFile("advImage");response.setCharacterEncoding(BusinessConstants.ENC OD_UTF);response.setHeader("ContentType", "json");PrintWriter out = response.getWriter();// 组合零时图片名String imageName = image.getOriginalFilename();String file_ext = imageName.substring(stIndexOf(BusinessConstants.DOT) + 1);SimpleDateFormat df = new SimpleDateFormat(BusinessConstants.DATE_FORMAT);String tempImageName = user.getId() +BusinessConstants.UNDERLINE + df.format(new Date()) + BusinessConstants.DOT + file_ext;// 存放浏览图片的零时文件路径File file = new File(request.getSession().getServletContext().getRealPath(Business Constants.TEMP_PICTURE_PATH +tempImageName));byte[] advImageBytes = null;InputStream advImageStream = null;try {file.createNewFile();advImageStream = image.getInputStream();advImageBytes = FileCopyUtils.copyToByteArray(advImageStream);FileCopyUtils.copy(advImageBytes, file);advImageStream.close();} catch (IOException e) {e.printStackTrace();}String tempPath = BusinessConstants.TEMP_RELATIVE_PICTURE_PATH +tempImageName;// 传给页面相对路径out.print("{");out.print("tempPath:'"+tempPath+"',");out.print("msg:''");out.print("}");out.flush();out.close();// ajaxreturn null;}上面的uploadPreviewImage调用完成后就会把下面的div显示出来(初始隐藏):这就是截图界面啦!<input id="h" type="hidden" /></div><input type="button" id="cutImage" name="cutImage" class="btton-queren" onclick="cutImage()" style="float: right;" value="保存"/></div>步骤2:我们可以看到截图完毕后点击保存,就会调用cutImage方法:里面我们利用dwr调用ReleaseService的cutImage方法。
java图片上传剪切图片整套实现方法(2)
java图片上传剪切图片整套实现方法(2)html页面:2、上传好图片后,要根据自己的需要进行剪切,处理方法为://剪切图片public String clippingPicture(){HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();try{String powerStr = session.getAttribute("power").toString();int power=0;if(powerStr==null){request.setAttribute("failMsg", "异常操作,用户已退出,请重新登录!");return "login";}else{power = Integer.parseInt(powerStr);}if(power==2){//对图片进行剪切处理Driver_detail detail = dds.getDriver_detailByDriverId(driverId);String pimgurl = detail.getImageUrl();//要删除的图片绝对路径String savePath = ServletActionContext.getServletContext().getRealPath("");// 获取项目根路径savePath = savePath.replace("\", "\\\\");savePath = savePath + "\\\\uploadImages\\\\";String imgAbl = savePath+pimgurl;OperateImage o = new OperateImage( x , y , width , height );o.setSrcpath(imgAbl);o.setSubpath(imgAbl);o.cut();//对图片进行缩放处理Driver_detail detail1 = dds.getDriver_detailByDriverId(driverId);String pimgurl1 = detail1.getImageUrl();//要删除的图片绝对路径String savePath1 = ServletActionContext.getServletContext().getRealPath("");// 获取项目根路径savePath1 = savePath1.replace("\", "\\\\");savePath1 = savePath1 + "\\\\uploadImages\\\\";String imgAbl1 = savePath1+pimgurl1;Resize r= new Resize();BufferedImage b;b = ImageIO.read(new FileInputStream(imgAbl1));BufferedImage bb = r.rize(b,100,100);ImageIO.write(bb, "jpg" , new File(imgAbl1));return "showDriversAction";}else{request.setAttribute("failMsg", "异常操作,用户已退出,请重新登录!");return "login";}}catch (CannotCreateTransactionException e) {request.setAttribute("failMsg", "数据库连接失败,请联系管理员");return "login";}catch (HibernateException e) {request.setAttribute("failMsg", "更改司机头像出错,请重新操作");return "showDriversAction";}catch (Exception e) {request.setAttribute("failMsg", "更改司机头像出错,请重新操作");return "showDriversAction";}}在方法中用到了几个关键的类:OperateImage.java剪切图片类:package mobi.zhangsheng.jiejia.util;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Iterator;import javax.imageio.ImageIO;import javax.imageio.ImageReadParam;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;import pany_detail;import org.apache.struts2.ServletActionContext;public class OperateImage {// ===源图片路径名称如:c:\1.jpgprivate String srcpath;// ===剪切图片存放路径名称。
jcrop 参数
jcrop 参数jcrop是一个基于jQuery的图片裁剪插件,通过设置参数可以实现不同的裁剪效果。
以下是jcrop插件常用的参数:1. aspectRatio: 设置裁剪框的宽高比,可以是数字或者是一个数组。
例如:aspectRatio: 1 表示裁剪框的宽高比为1:1。
2. minSize: 设置裁剪框的最小尺寸,可以是一个数组,例如:minSize: [100, 100] 表示裁剪框的最小宽度为100px,最小高度为100px。
3. maxSize: 设置裁剪框的最大尺寸,可以是一个数组,例如:maxSize: [500, 500] 表示裁剪框的最大宽度为500px,最大高度为500px。
4. setSelect: 设置默认的选中区域,可以是一个数组,例如:setSelect: [100, 100, 300, 300] 表示默认选中区域的左上角坐标为(100, 100),宽度为300px,高度为300px。
5. onSelect: 当选中区域发生变化时触发的回调函数,可以在该函数中进行一些操作,例如实时显示选中区域的坐标、宽度和高度等。
6. onChange: 当选中区域发生变化时触发的回调函数,与onSelect类似,但是onChange会频繁触发,而onSelect只在选中区域变化时触发一次。
7. onSelectChange: 当选中区域发生变化时触发的回调函数,与onChange类似,但是onSelectChange只在鼠标释放时触发一次。
8. allowSelect: 是否允许新建选中区域,默认为true。
9. allowResize: 是否允许调整选中区域的大小,默认为true。
10. allowMove: 是否允许移动选中区域,默认为true。
以上是jcrop插件的一些常用参数,具体可以根据自己的需求进行设置和调整。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA 截取图片代码[java]view plaincopyprint?1. package com.wansha;2.3. import java.awt.Rectangle;4. import java.awt.image.BufferedImage;5. import java.io.File;6. import java.io.FileInputStream;7. import java.io.IOException;8. import java.util.Iterator;9.10. i mport javax.imageio.ImageIO;11. i mport javax.imageio.ImageReadParam;12. i mport javax.imageio.ImageReader;13. i mport javax.imageio.stream.ImageInputStream;14.15.16. p ublic class Test {17.18. //===源图片路径名称如:c:/1.jpg19. private String srcpath ;20.21. //===剪切图片存放路径名称.如:c:/2.jpg22. private String subpath ;23.24. //===剪切点x坐标25. private int x ;26.27. private int y ;28.29. //===剪切点宽度30. private int width ;31.32. private int height ;33.34. public Test(){35.36. }37. public Test(String srcpath,String subpath ){38. this.srcpath = srcpath;39. this.subpath = subpath;40. }41.42. /**43. * 对图片裁剪,并把裁剪完蛋新图片保存。
44. */45. public void cut(int x,int y,int width,int height) throws IOException{46. this.x = x ;47. this.y = y ;48. this.width = width ;49. this.height = height ;50.51. FileInputStream is = null ;52. ImageInputStream iis =null ;53.54. try{55. //读取图片文件56. is = new FileInputStream(srcpath);57.58. /*59. * 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader60. * 声称能够解码指定格式。
参数:formatName - 包含非正式格式名称 .61. *(例如 "jpeg" 或 "tiff")等。
62. */63. Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");64. ImageReader reader = it.next();65. //获取图片流66. iis = ImageIO.createImageInputStream(is);67.68. /*69. * <p>iis:读取源.true:只向前搜索 </p>.将它标记为‘只向前搜索’。
70. * 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader71. * 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。
72. */73. reader.setInput(iis,true) ;74.75. /*76. * <p>描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O77. * 框架的上下文中的流转换一幅图像或一组图像。
用于特定图像格式的插件78. * 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回79. * ImageReadParam 的实例。
80. */81. ImageReadParam param = reader.getDefaultReadParam();82.83. /*84. * 图片裁剪区域。
Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象85. * 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。
86. */87. Rectangle rect = new Rectangle(x, y, width, height);88.89.90. //提供一个 BufferedImage,将其用作解码像素数据的目标。
91. param.setSourceRegion(rect);92.93. /*94. * 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将95. * 它作为一个完整的 BufferedImage 返回。
96. */97. BufferedImage bi = reader.read(0,param);98.99. //保存新图片100. ImageIO.write(bi, "jpg", new File(subpath)); 101. }102.103. finally{104. if(is!=null)105. is.close() ;106. if(iis!=null)107. iis.close();108. }109.110.111.112. }113.114. public int getHeight() {115. return height;116. }117.118. public void setHeight(int height) {119. this.height = height;120. }121.122. public String getSrcpath() {123. return srcpath;124. }125.126. public void setSrcpath(String srcpath) {127. this.srcpath = srcpath;128. }129.130. public String getSubpath() {131. return subpath;132. }133.134. public void setSubpath(String subpath) {135. this.subpath = subpath;136. }137.138. public int getWidth() {139. return width;140. }141.142. public void setWidth(int width) {143. this.width = width;144. }145.146. public int getX() {147. return x;148. }149.150. public void setX(int x) {151. this.x = x;152. }153.154. public int getY() {155. return y;156. }157.158. public void setY(int y) {159. this.y = y;160. }161. public static void main(String[] args)throws Exception{ 162. String name = "C:"+File.separator+"myimg.jpg"; 163. Test o = new Test(name,"c:"+File.separator+"2.jpg"); 164. o.cut(100,100,100,100) ;165. }166. }[javascript]view plaincopyprint?1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://ww/TR/xhtml1/DTD/xhtml1-strict.dtd">2. <html xmlns="http://www.w/1999/xhtml">3. <head>4. <script type="text/javascript" src="../jquery-1.3.2.js"></script>5. <script type="text/javascript" src="../jquery.imgareaselect-0.8.min.js"></script>6. <script type="text/javascript">7. function preview(img, selection)8. {9. var scaleX = 100 / (selection.width || 1);10. var scaleY = 100 / (selection.height || 1);11.12. $('#myimg + div > img').css({13.14. width: Math.round(scaleX * 1024) + 'px', //1024指源图片的宽度15. height: Math.round(scaleY * 768) + 'px', //768指源图片的高度16. marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',17. marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'18. });19. }20.21. $(document).ready(function () {22. $('<div><img src="myimg.jpg" style="position: relative;" /></div>')23. .css({24. float: 'left',25. position: 'relative',26. overflow: 'hidden',27. width: '100px',28. height: '100px'29. })30. .insertAfter($('#myimg'));31. });32.33. $(window).load(function () {34. $('#myimg').imgAreaSelect({ aspectRatio: '1:1', onSelectChange: preview});35. });36. </script>37. </head>38.39. <body>40. <img id="myimg" src="myimg.jpg"/>41. </body>42. </html>。