- 浏览: 129410 次
- 性别:
- 来自: 齐齐哈尔滨
文章分类
最新评论
-
sunstar356:
不错 有帮助
Java反射实体类属性(get ,set方法) -
DarkWingBoy:
好多银行网站都是SSH框架做的吧。。。
SSH框架的瓶颈在哪里? -
OnePiece_2012:
很好 多谢了
中科软面试笔试题 -
hzw2312:
.......!
够给力!
JavaScript 获得 汉字 的 完整 拼音 -
tkgguter88:
初学者。谢谢分享
JavaScript 获得 汉字 的 完整 拼音
package image; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.PixelGrabber; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class WaterMark { /** * 获取指定矩形中的像素的矩阵 * * @param imageSrc * @param startX * @param startY * @param w * @param h * @return */ private int[] getPixArray(Image imageSrc, int startX, int startY, int w, int h) { int[] pix = new int[(w - startX) * (h - startY)]; /*下面是别人程序中的一段,我实在不明白为何要加这一段,因为我去掉也没有问题,加上还会报错*/ PixelGrabber pg = null; try { pg = new PixelGrabber(imageSrc, startX, startY, w-startX, h-startY, pix, 0, w); if (pg.grabPixels() != true) { try { throw new java.awt.AWTException("pg error" + pg.status()); } catch (Exception eq) { eq.printStackTrace(); } } } catch (Exception ex) { ex.printStackTrace(); } return pix; } /** * 将1张图片和另1张图片的指定区域重合。可用于制作水印。图片的左上角坐标为0,0 * * @param lightnessWaterImg * 颜色比较亮的水印图片,适合底色比较暗的情况 * @param darknessWaterImg * 颜色比较暗的水印图片,适合底色比较亮的情况,如果不想区分,则输入null,平均灰度边界同时失效。 * @param targetImg * 源图片 * @param startX * @param startY * @param x * @param y * @param alpha * 透明度,0f为全透明,1f为完全不透明,0.5f为半透明 * @param averageGray * 平均灰度边界(0-255),大于此值,则打暗的水印图片,小于此值则打亮的水印图片。 * 默认值128。超过范围,按默认值进行。 */ private final void pressImage(String lightnessWaterImg, String darknessWaterImg, String targetImg, int startX, int startY, int x, int y, float alpha, float averageGray) { try { // 先判断亮水印和源文件的值是否为null,否则抛出异常 if (lightnessWaterImg == null || lightnessWaterImg == "" || targetImg == null || targetImg == "") { throw new Exception("亮水印或者源图片的地址不能为空"); } // 再判断平均灰度边界是否越界 if (averageGray>255||averageGray<0) { averageGray = 128; } // 装载源图片 File _file = new File(targetImg); // 图片装入内存 BufferedImage src = ImageIO.read(_file); // 获取图片的尺寸 int width = src.getWidth(null); int height = src.getHeight(null); // 根据源图片尺寸,设置预装载的一个图片,默认是RGB格式的 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = image.createGraphics(); // 绘制内存中的源图片至指定的矩形内 graphics.drawImage(src, 0, 0, width, height, null); // 在已经绘制的图片中加入透明度通道 graphics.setComposite(AlphaComposite.getInstance( AlphaComposite.SRC_ATOP, alpha)); // 获取源图片中和设定的同样大小的区域内的像素集合 int[] pixels = getPixArray(src, startX, startY, x, y); //查询此集合的平均灰度 float average = getAverageGrap(x-startX,y-startY,pixels); // 如果平均灰度大于130,则说明此区域比较亮,否则则比较暗 System.out.println(average); //装载水印图片所需参数 File water; BufferedImage bufferwater; // 根据设定的平均灰度边界来装载不同的水印 if (darknessWaterImg == null||average>=averageGray) { // 装载亮水印文件 water = new File(darknessWaterImg); }else{ // 装载暗水印文件 water = new File(lightnessWaterImg); } // 装入内存 bufferwater = ImageIO.read(water); graphics.drawImage(bufferwater, startX, startY, x, y, null); // 水印文件结束 graphics.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); // 绘制新的文件 encoder.encode(image); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 查询某个区域的平均灰度 * @param width * @param height * @param pixels * @return */ private float getAverageGrap(int width,int height,int[] pixels){ /* 下面是开始算这个区域的亮度了,灰度等同于亮度 */ ColorModel colorModel = ColorModel.getRGBdefault(); int i = 0; int j = 0; int k = 0; int r = 0; int g = 0; int b = 0; int gray = 0; float average = 0;// 平均灰度 for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { // 定位像素点 k = i * width + j; r = colorModel.getRed(pixels[k]); g = colorModel.getGreen(pixels[k]); b = colorModel.getBlue(pixels[k]); // 计算灰度值 gray = (r * 38 + g * 75 + b * 15) >> 7; average = average + gray; } } // 计算平均灰度 average = average / ((i - 1) * (j - 1)); return average; } public static void main(String[] args) { WaterMark waterMark = new WaterMark(); waterMark.pressImage("F:\\a2.png", "a1.png", "2.jpg", 520, 500, 900, 800, 0.5f, 50); System.out.print("添加成功"); } }
发表评论
-
Android原理揭秘系列之VacantCell缓存
2011-09-08 17:01 946操作过Android手机的朋友应该对在待机界面拖动图标的交互效 ... -
Hibernate 疑难杂症
2011-09-06 13:44 966作者:小生、我怕怕 网址:http://www.apk ... -
APKBank.NET 安卓银行隆重上线运营。
2011-09-01 10:10 934安卓银行(APKBank.NET)于2011年9月1 ... -
深入探讨 Java 类加载器
2011-08-17 13:43 985作者:小生、我怕怕; Email:17zouguo@si ... -
navicat Oracle Instant Client Light: unsupported server character set CHS16GBK解决
2011-06-28 12:10 1577Navicat 连接 Oracle 出现 Instant Cl ... -
用Spring JMS使异步消息变得简单
2011-04-21 13:00 1336用Spring JMS使异步消息变得简单 ... -
通过Google获取天气预报信息
2011-04-19 16:31 1208Google提供获取天气预报信息的接口: http://ww ... -
Java堆和栈的区别
2011-04-19 15:11 801栈与堆都是Java用来在Ram ... -
解决办法:Access restriction: The type JPEGImageEncoder is not accessible due to rest
2011-04-15 13:20 1089在Eclipse中处理图片,需要引入两个包:import co ... -
Spring 3.0 注解注入详解
2011-04-12 14:48 12475一、各种注解方式 1.@Aut ... -
Spring事务配置的五种方式
2011-04-12 10:23 737前段时间对Spring ... -
Spring3.0+Struts2.1.8+Hibernate3.5整合
2011-04-02 10:03 1118Spring3.0+Struts2.1.8+Hibernate ... -
Java实现远程屏幕监视
2011-03-16 10:49 1153远程屏幕监视使 ... -
图片的切割和缩略
2011-03-02 18:56 816package com.supben.util; imp ... -
Java 图片水印+文字水印+缩图实现
2011-03-02 18:54 1049import java.awt.AlphaComposite; ... -
Java 实现截屏
2011-03-02 18:49 775import java.awt.Dimension; i ... -
java 缩略图
2011-03-02 18:48 0一、较清晰的方法: import java.awt.Grap ... -
PO,BO, VO, DTO, POJO, DAO的概念及区分
2011-02-24 21:36 956O/R Mapping 是 Object Relation ... -
SSH struts、spring、hibernate 面试题
2011-02-24 16:03 1182Hibernate工作原理及为什么要用? 原理: ... -
数据压缩与传输
2011-01-07 13:11 1301FileServer: import java.net.*; ...
相关推荐
// 增加明暗度(这里假设增加50,可以根据需求调整) red += 50; green += 50; blue += 50; // 防止溢出,如果超过255,则设置为255 red = Math.min(255, red); green = Math.min(255, green); blue = Math...
webplugin调节屏幕明暗度软件 快捷键失效时好用的屏幕明暗度软件
在Android操作系统中,音量和明暗度是用户体验的重要组成部分,它们直接影响到用户与设备的交互方式和视觉舒适度。本文将深入探讨Android系统中的音量控制和屏幕明暗度调节,以及与手势操作的关联。 一、Android...
显示屏明暗度调节器,热键不好使的可以改换用这个
本文介绍了一种基于BH1750的机动车遮阳板明暗度智能控制系统的设计,旨在提高驾驶安全性,适应不同光线环境。该系统利用了LCD液晶屏的变光特性,通过实时监测外界光照强度,动态调整液晶屏的驱动电压,以改变遮阳板...
照片自动变清晰工具[8月27日修正明暗度问题]【值得收藏!】 照片自动变清晰工具[8月27日修正明暗度问题]【值得收藏!】 软件名称:照片自动变清晰工具┊轻轻松松把暗淡的图片瞬间变的清晰┊绿色版 软件类型:国产...
标题中的“基于BH1750的机动车遮阳板明暗度智能控制系统设计”涉及到一个汽车电子技术的应用,主要关注的是车内遮阳板的智能化控制。在这个系统中,BH1750是一款光强度传感器,用于检测环境光线的亮度,以此来调节...
线性变化处理能改善由水印带来的对彩色图像明暗度的影响,同时利用一维Tent混沌的特性构成混沌二维置换网络,只需要一个初值,使算法更加简单。由实验结果表明该算法对JPEG压缩稳健,而对恶意操作敏感,同时水印提取...
根据提供的信息,我们需要详细说明使用jQuery实现图片灯箱明暗遮罩效果的知识点。由于文件内容不完整,我们将基于文件标题和描述的内容,推断可能的知识点。 1. jQuery技术概述: jQuery是一个快速、小巧、功能丰富...
光的明暗度随着光源的能量和距离改变,摄影师要学会根据光线的强弱调整拍摄策略。 其次,光的方向对照片的立体感和影调起着决定性作用。主要的光位有顺光、侧光和逆光,它们分别呈现不同的视觉效果。顺光使物体明亮...
例如,Photoshop 软件可以对图像进行编辑、加工和处理,调整图像的颜色、对比度和明暗度等,使图像更加生动和吸引人。 3. Photoshop 在海报设计中的作用 Photoshop 软件在海报设计中可以发挥以下几个方面的作用: ...
- **步骤一**:对于4100型号的打印机,进入“菜单”,选择“明暗度”,通过左右键调整,最后按下“确认”键。此操作适用于解决打印时放大后缩小不了的问题,或者使用一段时间后边缘缺失过多的情况。 - **步骤二**...
SFS 方法还要基于三个假设:反射模型为朗伯特模型,即从各个角度观察,同一点的明暗度都相同的;光源为无限远处点光源;成像关系为正交投影。 光度立体视觉(Photometric Stereo) 光度立体视觉方法通过多个不共线的...
"液晶显示器亮暗度调节软件"是一种专门针对LCD显示器设计的应用程序,它的主要功能就是允许用户自由地调整屏幕亮度。在日常使用中,显示器的亮度调节是非常重要的,因为合适的亮度不仅有助于保护视力,还可以提高...
在Android程序开发中,我们经常需要对UI元素进行各种自定义操作,以满足不同场景的需求。其中,调整ImageView的亮度是提升用户体验的一个重要方面。本文将深入探讨如何在Android中动态地设置ImageView的亮度。 首先...
此外,色彩的纯度和明暗度也能激发不同的情感联想,高纯度色彩显得华丽,低纯度则显得朴素。 【产品功能与色彩情感】在产品设计中,色彩被用来增强功能的表达和理解。如冰箱通常采用冷色调,暗示其制冷功能;闹钟的...
其中,`brightness_value`是你想要增加或减少的亮度值,`new_pixel`和`old_pixel`分别是调整后和调整前的像素值。需要注意的是,如果新的像素值超过了255(对于8位图像),应将其截断到255,低于0则截断到0,以保持...
亮度就是各种颜色的图形原色(如 RGB 图像的原色为 R、G、B 三种或各种自的色相)的明暗度,亮度调整也就是明暗度的调整。 亮度范围从 0 到 255,共分为 256 个等级。而我们通常讲的灰度图像,就是在纯白色和纯黑色...
亮度是图像中像素的明暗程度,它决定了图像的整体明暗感觉。而颜色则由色度和饱和度两部分构成。色度是指颜色的位置,通常用色轮上的角度来表示,它代表了颜色的基本属性,如红色、蓝色或绿色。饱和度则是指颜色的...