首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

Java SWT Image 图像 —— 反色、拉伸、透明附加

2012-08-27 
Java SWT Image 图像 —— 反色、拉伸、透明叠加图像反色对于彩色图像的 R、G、B 各彩色分量取反的技术就是图像

Java SWT Image 图像 —— 反色、拉伸、透明叠加
图像反色

对于彩色图像的 R、G、B 各彩色分量取反的技术就是图像的反色处理,这在处理二值化图像的连通区域选取的时候非常重要。如物体连通域用黑色表示,而二值化后的物体连通域图像可那是白色的,而背景是黑色的,这时应手动选取图像的反色处理或有程序根据背景和物体连通域两种颜色的数量所占比例而自动选择是否选择选取图像的反色处理,其算法很简单,假设源图像一像素的红,绿,蓝分量为 (R,G,B),则目标图像该像素的红绿蓝分量应变为 (255 - R,255 - G, 255 - B)。

private static ImageData watermark(ImageData srcData1, ImageData srcData2, double alpha) {if(srcData1.width != srcData2.width || srcData1.height != srcData2.height || rcData1.bytesPerLine != srcData2.bytesPerLine)//未考虑不同大小图片的叠加return null;int bytesPerPixe = srcData1.bytesPerLine / srcData1.width;int destBytesPerLine = srcData1.width * bytesPerPixe;byte[] newData = new byte[srcData1.data.length];ImageData newImageData = new ImageData(srcData1.width, srcData1.height, srcData1.depth,srcData1.palette, destBytesPerLine, newData);for (int srcY = 0; srcY < srcData1.height; srcY++) {for (int srcX = 0; srcX < srcData1.bytesPerLine; srcX++) {int idx = srcY * srcData1.bytesPerLine + srcX;newImageData.data[idx] = (byte)(alpha * srcData1.data[idx]  + (1- alpha) * srcData2.data[idx]);}}return newImageData;}

?


需要说明的是,以上所列举的清单中大部分都没有对透明度数据进行处理,读者如对带有透明度数据图片进行处理的时候,可自行添加相关代码,其处理过程跟对 ImageData 数据处理过程类似。

热点排行