- 浏览: 3119824 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RBG,每个点就减去相同的量,而且这个量是个渐变的量。是的,就是这样,我们的程序也是这个思路,不过就是没有单纯的“想”这么简单了。我这里只编写了纵向渐变,还没有写其他复杂的渐变,以后慢慢研究吧。先看效果:
原始图片:
图像变暗渐变:
图像变暗渐变:
图像变亮渐变:
图像变亮渐变:
我们以图像渐变暗举例,渐变亮同样的道理,无非是一个减,一个加。
1.我们要先拿到图片,这个不赘述了,就是获得图像的BufferedImage。
2.获得图像的宽度,高度,像素值,并创建一个存储图像像素信息DirectColorModel类dem。然后我们从dem中每一个像素值。我们给每一个像素都减去一个相同的像素值。并且伴随着图片的高度不同,每个像素点减去的值也是一个渐变的值。这里需要说明一下的是float beginPart,beginPart是渐变开始的位置,默认为1,就是从图像中间开始,beginPart<1从图像的中间偏上开始渐变,越小越偏上。beginPart>1从图像的中间偏下开始渐变,越大越偏上。
代码如下:
3.利用改变后的像素点,生成一副新的图片。代码如下:
附件是一个完整的例子,运行时,请将文件夹根目录下的demo.jpg复制到C盘根目录下,因为这个路径我在程序里偷懒是写死的,如果不复制这个图片,找不到图片程序自然会出IO异常;或者大家自己去程序里修改图片的路径。
文章地址:http://javapub.iteye.com/blog/736799
相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
原始图片:
图像变暗渐变:
图像变暗渐变:
图像变亮渐变:
图像变亮渐变:
我们以图像渐变暗举例,渐变亮同样的道理,无非是一个减,一个加。
1.我们要先拿到图片,这个不赘述了,就是获得图像的BufferedImage。
2.获得图像的宽度,高度,像素值,并创建一个存储图像像素信息DirectColorModel类dem。然后我们从dem中每一个像素值。我们给每一个像素都减去一个相同的像素值。并且伴随着图片的高度不同,每个像素点减去的值也是一个渐变的值。这里需要说明一下的是float beginPart,beginPart是渐变开始的位置,默认为1,就是从图像中间开始,beginPart<1从图像的中间偏上开始渐变,越小越偏上。beginPart>1从图像的中间偏下开始渐变,越大越偏上。
代码如下:
private int[] darkerPixels(BufferedImage originalPic, float beginPart) { // 得到图片的宽度。 int imageWidth = originalPic.getWidth(); // 得到图片的高度。 int imageHeight = originalPic.getHeight(); // 得到图片的像素值。 int totalBlocks = imageWidth * imageHeight; // 创建相处值的存储空间。 int[] pixels = new int[totalBlocks]; // 存储图像像素信息。 DirectColorModel dem = new DirectColorModel(24, 0xff0000, 0x00ff00, 0x0000ff); float inc = 255f / imageHeight / beginPart; int int_inc = 100; float float_inc = 0; for (int i = 0; i < totalBlocks; i++) { if (i % imageHeight == 0 && i != 0) { float_inc = float_inc + inc; int_inc = (int) (float_inc); if (0 > int_inc) { int_inc = 0; } if (255 < int_inc) { int_inc = 255; } } int a = dem.getAlphaMask() / 2; int r = dem.getRed(pixels[i]) - int_inc; if (r < 0) { r = 0; } int g = dem.getGreen(pixels[i]) - int_inc; if (g < 0) { g = 0; } int b = dem.getBlue(pixels[i]) - int_inc; if (b < 0) { b = 0; } pixels[i] = a << 24 | r << 16 | g << 8 | b; } return pixels; }
3.利用改变后的像素点,生成一副新的图片。代码如下:
public final BufferedImage getGradualImg(BufferedImage originalPic) { // 设置渐变的开发位置,1为中间位置,小于1开始位置偏上,大于1开始位置偏下。 float beginPart = 1f; // 得到图片的所有渐变后的像素点。 int[] pixels = darkerPixels(originalPic, beginPart); int imageWidth = originalPic.getWidth(); int imageHeight = originalPic.getHeight(); MemoryImageSource memoryimagesource = new MemoryImageSource(imageWidth, imageHeight, new DirectColorModel(24, 0xff0000, 0x00ff00, 0x0000ff), pixels, 0, imageWidth); Image imageBuf = null; try { memoryimagesource.setAnimated(true); memoryimagesource.setFullBufferUpdates(true); imageBuf = this.createImage(memoryimagesource); // 生成新的图像 memoryimagesource.newPixels(); } catch (NoSuchMethodError e) { e.printStackTrace(); } BufferedImage changedImage = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g2d = changedImage.createGraphics(); g2d.drawImage(imageBuf, 0, 0, this); return changedImage; }
附件是一个完整的例子,运行时,请将文件夹根目录下的demo.jpg复制到C盘根目录下,因为这个路径我在程序里偷懒是写死的,如果不复制这个图片,找不到图片程序自然会出IO异常;或者大家自己去程序里修改图片的路径。
文章地址:http://javapub.iteye.com/blog/736799
相关文章
Java图像图片 边缘检测 http://javapub.iteye.com/blog/685468
Java图像变灰 http://javapub.iteye.com/blog/687082
Java 给图片增加 水印图片 水印文字 [url]Java 给图片增加 水印图片 水印文字[/url]
Java图像渐变 http://javapub.iteye.com/blog/736799
Java将大图片转成小图片 http://javapub.iteye.com/blog/666607
- ZPhotoer.zip (49.7 KB)
- 下载次数: 247
发表评论
-
利用JFrame直接显示JFreeChart的图片
2012-06-12 16:38 5289核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 3039用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6912jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9850GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11870Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7187今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6677关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6260能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9570关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2347将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 9043图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2943DirectColorModel 类别是使用像素值的 Colo ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4313很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12664用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19800对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10326Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4650Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50416Image是一个抽象列,BufferedImage是Image ... -
Swing显示图片
2010-06-02 17:48 32505Swing显示图片可以有很多的种选择,例如:可以用JLabel ... -
Java将大图片转成小图片
2010-05-14 16:46 7857我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
在Java编程语言中,对图片进行高级处理包括各种图像操作,如渐变、锐化和边缘检测等。这些技术在图像处理和计算机视觉领域中至关重要,可以用于改善图像质量、识别图像特征或创建视觉效果。以下是对这些概念的详细...
在Java编程语言中,创建图形效果,特别是从圆形到方形的渐变效果,涉及到Java的图形绘制和颜色处理。这个程序可能使用了Java AWT(Abstract Window Toolkit)或Swing库来实现,这两个库提供了丰富的图形用户界面组件...
BGradualProgress是一个基于Java的渐变进度条设计源码,包含51个文件,其中包括17个XML文件、10个PNG图片文件、6个Java源文件、4个Gradle文件、3个gitignore文件、2个.pro文件、2个Properties文件、1个LICENSE文件和...
Java 2D API是一个强大的图形绘制和图像处理工具包,它允许开发者创建复杂的图形、矢量图形以及进行高级的文本渲染。要实现渐变文字,我们需要关注以下关键知识点: 1. **Graphics2D对象**:这是Java 2D API的核心...
图片的渐变,能够实现图片的渐进渐出,图片的切换等功能
Java图片处理工具ImageMagick是一个强大的跨平台图形处理库,它允许开发人员在Java应用程序中进行复杂的图像操作,包括但不限于转换、编辑、合成图像以及处理大量格式的图像文件。ImageMagick是由C语言编写的,但...
Java实现颜色渐变效果可以通过使用Java的图形库AWT和Swing来实现,使用BufferedImage和Graphics对象来绘制图像,并使用递增和递减颜色值来实现颜色渐变的效果。 知识点: * Java图形库AWT和Swing * BufferedImage...
Java图像编程是Java编程语言中的一个重要领域,它允许开发者创建丰富的图形用户界面(GUI)和处理图像数据。这个“Java图像编程实例库”显然是一份集合了多种Java图像编程示例的资源,可以帮助学习者更好地理解和...
这个"Js实现图片渐变效果.rar"压缩包可能包含一个或多个代码示例,帮助初学者理解如何通过JavaScript来操作图像像素,实现颜色渐变。 首先,我们需要了解JavaScript中的Canvas API。Canvas是HTML5引入的一个重要...
在Android开发中,设置Alpha值实现图片渐变效果是一种常见的动画技术,它可以为用户界面增添动态感和视觉吸引力。本文将深入探讨如何通过调整Alpha透明度来实现这种效果,并结合提供的资源文件`Xh_04_05_Test_01`...
- 考虑使用BitmapShader,它允许我们在Bitmap上应用Shader,这对于处理大图或复杂图像的渐变效果特别有用。 - 若需频繁更新,使用硬件加速可以提升性能,通过在Activity或View的属性中开启硬件加速。 代码示例: ...
1. **Java图像处理基础**: Java中的`java.awt`和`javax.imageio`包为开发者提供了基本的图像处理功能。例如,可以使用`BufferedImage`类创建、读取和修改图像。`Graphics2D`子类提供了一套绘图方法,用于在图像上...
Java图片溶合特效是一种在图像处理中常见的技术,它通过将两张或多张图片按照特定算法进行混合,创造出独特的视觉效果。...通过深入学习和实践,你不仅可以掌握Java图像处理的基本原理,还能提升自己的编程和设计能力。
本文将深入探讨如何实现一个图片渐变动画的Demo,基于提供的信息,我们主要关注两个方面:源码解析和工具使用。 首先,"android Animation图片渐变动画"指的是在Android平台上,通过编程方式让图片从一种状态平滑地...
通过这个"java图像编程大全"实例库,开发者可以学习到如何使用Java来创建交互式图像应用,如图形编辑器、图片浏览器,甚至是简单的游戏。每一个源代码都是一个生动的教学案例,帮助理解Java图形编程的原理和实践技巧...
在本文中,我们将介绍如何使用Java设置PPT幻灯片背景,包括纯色、渐变和图片背景三个方面。 纯色背景 在Java中,我们可以使用Spire.Presentation库来设置PPT幻灯片背景。首先,我们需要添加Spire.Presentation.jar...
Java作为一种广泛使用的编程语言,提供了强大的图形图像处理能力。本实验旨在通过Java实现图形图像的各种功能,包括但不限于绘制、变换、颜色处理等,同时也锻炼了算法设计与实现的能力。 首先,我们要理解Java中的...
Java 2D是Java平台中的一个图形处理框架,它提供了丰富的功能来创建和操作复杂的二维图形和图像。这个框架在Sun Microsystems(后被Oracle收购)的程序员们的精心设计下诞生,旨在为Java开发者提供高效、灵活的图形...
要在二维码中间嵌入Logo,我们需要先加载Logo图片,然后将其与生成的二维码图像合并。以下是一个简单的实现: ```java BufferedImage logo = ImageIO.read(new File("logo.png")); int logoWidth = Math.min...