- 浏览: 424946 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (239)
- java (59)
- JQuery (5)
- oracle (12)
- javascript (14)
- struts1 (1)
- spring (10)
- Quartz (2)
- ibatis (1)
- linux (32)
- weblogic (3)
- ibaits (2)
- servlet (1)
- log4j (5)
- 编程人生 (2)
- apache (3)
- window (3)
- web前端 (25)
- 错误集合 (2)
- 框架配置 (1)
- 开发工具 (15)
- 小插件应用 (1)
- lucene (1)
- sonar (1)
- velocity (1)
- 代码检查 (0)
- error (1)
- jndi (1)
- oracle函数 (1)
- tools (1)
- 代码管理 (3)
- mysql (4)
- maven (9)
- bat (1)
- git (3)
- aix (2)
- freemarker (1)
- svn (2)
- nginx (6)
最新评论
-
masuweng:
f
修改eclipse的内存 -
洞渊龙王:
...
maven-surefire-plugin学习 -
phf717601206:
WEB-INF/lib下就没有servlet-api.jar ...
Unable to read TLD "META-INF/c.tld"错误 -
sziitjiang:
很好,非常不错
Java读写excel之poi -
dengminghua1016:
doris1bruce 写道一、二、 ...
java创建对象的几种方式
图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RBG,每个点就减去相同的量,而且这个量是个渐变的量。是的,就是这样,我们的程序也是这个思路,不过就是没有单纯的“想”这么简单了。我这里只编写了纵向渐变,还没有写其他复杂的渐变,以后慢慢研究吧。先看效果:
原始图片:
图像变暗渐变:
图像变暗渐变:
图像变亮渐变:
图像变亮渐变:
我们以图像渐变暗举例,渐变亮同样的道理,无非是一个减,一个加。
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;
- }
发表评论
-
org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.ap解决方案
2014-05-09 09:24 860是tomcat的lib文件夹jar包和项目的lib文件下的j ... -
基于mock对象和JUnit框架简化Spring Web组件单元测试(1)
2014-03-13 14:25 1787对于Java组件开发者来说,他们都盼望拥有一组能够对组件开 ... -
org.apache.taglibs.standard 转换成javax.servlet.jsp.tagext异常
2014-02-23 14:29 961java.lang.ClassCastExceptio ... -
acegi源码分析
2014-02-17 11:42 745AbstractProcessi ... -
深入研究java.lang.ThreadLocal类
2014-02-13 14:19 495一、概述 ThreadLocal是什么呢?其实Thr ... -
java synchronized详解
2014-02-13 09:38 726Java语言的关键字,当它用来修饰一个方法或者一个代码块的时 ... -
如何使用ide打jar包以及如何在cmd运行jar包
2013-12-02 00:05 1099一、怎么打jar包 第一步:选中要打jar包的工程 第二 ... -
window下Java环境配置
2013-08-29 13:54 4251.打开我的电脑--属性--高级--环境变量 ... -
Unable to read TLD "META-INF/c.tld"错误
2013-08-12 17:50 14232严重: Servlet.service() for ser ... -
According to TLD or attribute directive in tag file, attribute value does not ac
2013-07-28 23:39 15740jsp编译的时候失败,原因是servlet版本与jstl标 ... -
使用velocity启动项目报错
2013-05-21 12:12 11267启动tomcat时,出现 2007-3-15 16:42 ... -
文件解压和压缩
2013-04-14 20:42 958文件解压和压缩 /** * compress ... -
java操作properties属性文件
2013-04-14 20:40 1140java更新或增加 ... -
JAVA基本数据类型
2013-04-11 11:30 0数据类型 大小 范围 ... -
JAVA应用 之 排序
2013-02-25 10:36 871概述: 1.本文阐述对List(Array乱入)的 ... -
JAVA基础 之 Map
2013-02-25 10:27 952概述: 1.键值对,key-value,具有映射关 ... -
JAVA基础 之 Collections
2013-02-25 10:24 1274概述: 1.Collec ... -
java基础之异常
2013-02-25 09:55 929讲述: 1.五个关键字 1.tr ... -
java实现缓存技术
2013-01-27 12:48 0java实现缓存技术,有时候我们需要将一些数据缓存起来,什么时 ... -
java创建对象的几种方式
2013-01-27 10:13 6367(1) 用new语句创建对象,这是最常见的创建对象的方法。 ...
相关推荐
在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...