java如何将24位位图转为单色位图

问题描述

现在已经有了24位位图,但用户需要单色位图。小弟才疏学浅,希望各个高手大侠帮帮忙!

解决方案

解决方案二:
http://zhidao.baidu.com/question/86621478.html灰度变换下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样。一般而言,灰度变换的算法是将象素的三个颜色分量使用R*0.3+G*0.59+B*0.11得到灰度值,然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的。另一种就是取红绿蓝三色中的最大值作为灰度值。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同。/*GrayFilter.java*//*@author:cherami*//*email:cherami@163.net*/importjava.awt.image.*;publicclassGrayFilterextendsRGBImageFilter{intmodelStyle;publicGrayFilter(){modelStyle=GrayModel.CS_MAX;canFilterIndexColorModel=true;}publicGrayFilter(intstyle){modelStyle=style;canFilterIndexColorModel=true;}publicvoidsetColorModel(ColorModelcm){if(modelStyle==GrayModelelseif(modelStyle==GrayModel}publicintfilterRGB(intx,inty,intpixel){returnpixel;}}/*GrayModel.java*//*@author:cherami*//*email:cherami@163.net*/importjava.awt.image.*;publicclassGrayModelextendsColorModel{publicstaticfinalintCS_MAX=0;publicstaticfinalintCS_FLOAT=1;ColorModelsourceModel;intmodelStyle;publicGrayModel(ColorModelsourceModel){super(sourceModel.getPixelSize());this.sourceModel=sourceModel;modelStyle=0;}publicGrayModel(ColorModelsourceModel,intstyle){super(sourceModel.getPixelSize());this.sourceModel=sourceModel;modelStyle=style;}publicvoidsetGrayStyle(intstyle){modelStyle=style;}protectedintgetGrayLevel(intpixel){if(modelStyle==CS_MAX){returnMath.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));}elseif(modelStyle==CS_FLOAT){return(int)(sourceModel.getRed(pixel)*0.3+sourceModel.getGreen(pixel)*0.59+sourceModel.getBlue(pixel)*0.11);}else{return0;}}publicintgetAlpha(intpixel){returnsourceModel.getAlpha(pixel);}publicintgetRed(intpixel){returngetGrayLevel(pixel);}publicintgetGreen(intpixel){returngetGrayLevel(pixel);}publicintgetBlue(intpixel){returngetGrayLevel(pixel);}publicintgetRGB(intpixel){intgray=getGrayLevel(pixel);return(getAlpha(pixel)<<24)+(gray<<16)+(gray<<8)+gray;}}

时间: 2024-11-25 18:29:34

java如何将24位位图转为单色位图的相关文章

如何在 Java 应用程序中读取 8 位和 24 位 Microsoft Windows 位图(转)

window|程序 如何在 Java 应用程序中读取 8 位和 24 位 Microsoft Windows 位图在 Java 应用程序中加载位图文件的逐步指南 作者:Jeff West 和 John D. Mitchell 摘要目前,标准的 getImage() 方法仅支持 GIF 和 JPEG 图像.尽管存在用于读取 PNG(可移植网络图形)格式的 Java 例程,但我们还没听说过有用于读取 Microsoft Windows 位图图像的阅读程序.Jeff West 撰写的这篇技巧提供了加载

JAVA 中一个字符串s ,有36位取前24位,代码怎么写?

问题描述 JAVA 中一个字符串s ,有36位取前24位,代码怎么写? 求解..JAVA 中 一个字符串s ,有36位取前24位,代码怎么写? 解决方案 s.substring(0 24) 解决方案二: s = s.subString(s 24); 解决方案三: s.substring(024); substring()方法包头不包尾索引从0开始 解决方案四: s = s.subString(024); substring()方法包头不包尾索引从0开始 解决方案五: s = s.subStrin

[大数据量]java移位运算与位运算与数据类型的存储

站在巨人的肩膀上,参考其他博客文章,汇总于此:  1G=1024M=1024K=1024BYTE=8BIT  Java数据类型的存储:(举例说明) 问:int 型的在内存中怎么存储,假设 int a=21:那么a是怎么被存到计算机里的.怎样把 a 变成二进制数. 怎么样把 a 存到 byte[]数组中? 答:int占4个字节,byte是1个字节,每个字节8位. 所以2进制的话,int最多可以表示正负一共2的32次方个数,byte则是2的8次方. e.g. int=21;在计算机中表示为00000

如果将普通图片转成单色位图bmp,例如画图工具转换成单色位图。

问题描述 请教大神们怎么用C#存储单色位图,和画板生成的单色为图一样.用于打印机打印单色位图(热敏打印机只支持单色位图)求完整的代码. 解决方案 解决方案二: 解决方案三:引用1楼starfd的回复:没有尝试过?这个代码要下载才可用使用.解决方案四:单色图?二值化?.publicImageGetBinaryImage(ImageimgSrc,bytebyValue){Bitmapb=newBitmap(imgSrc);Bitmapbmp=b.Clone(newRectangle(0,0,imgS

Delphi实现24位真彩色图标

引言 Delphi是目前广泛使用的可视化开发工具,它自身带有一个图片.图标的编辑器--Image Editor,但是到Delphi7为止,都不能进行真彩图标的编辑,可以说是一个遗憾.笔者通过对图标文件的研究,实现了产生24位真彩色图标. 图标文件的格式 首先,分析一个具体的图标 .在CS1.6中有一个图标game.ico( ),如果用WinHex等可以进行16进制编辑的软件打开这个图标文件,我们可以看到如下数据: 00 00 01 00 04 00 10 10 00 00 00 00 00 00

如何实现24位色工具条

大家知道IE的工具条都是多彩的,本文介绍如何在自己的应用程序里实现24位色工具条.如图一所示: 计算器"> 图一 第一步: 在mainframe.h文件中声明成员变量:CToolBar m_hotToolBar; 在 CMainFrame::OnCreate() 中创建工具条,假设你已经创建了一个ToolBar资源和两个工具条位图(Bitmap)资源:IDB_TOOLBAR_COLD 和 IDB_TOOLBAR_HOT,前者表示的是常态按钮,而后者表示的是鼠标移到上面时的状态按钮.用下面的

mfc- MFC读取24位bmp图像出问题了,求大神来解决

问题描述 MFC读取24位bmp图像出问题了,求大神来解决 我要实现的是将24位bmp文件读入并在用户区显示,但是显示结果都不对的,谁能来帮忙看下? 注:因为对bmp文件还要做后续的处理(比如RGB转CMYK这样的),所以我现在写的代码只是一个测试是否正确读取bmp的程序.用其它控件去读取图片对我来说是毫无用处的. 这是我的代码: void CMy3View::OnLoad() { // TODO: 在此添加命令处理程序代码 CString strFilter,strFilename,info;

C#图片灰度处理(位深度24→位深度8),用灰度数组byte[]新建一个8位灰度图像Bitmap 。

原文:C#图片灰度处理(位深度24→位深度8) #region 灰度处理 /// <summary> /// 将源图像灰度化,并转化为8位灰度图像. /// </summary> /// <param name="original"> 源图像. </param> /// <returns> 8位灰度图像. </returns> public static Bitmap RgbToGrayScale(Bitmap o

基于24位bmp图片数据区隐写的实现

1,关于数据区隐写 数据区隐写,即将数据写入到数据区中.相比文件外壳隐写和保留区隐写,更为隐蔽,隐藏的信息容量相对较大.在数据区隐写会造成图像变化,所以需要控制写入方式,以及改写量.使得在普通肉眼难以辨别的更改中实现数据的隐藏.至于其他的隐写方法请看:简单信息隐藏技术的实现与讨论. 2,24位bmp图像简介 要在bmp图像进行数据区隐写,必须要知道它的数据结构.否则,可能会破坏图像. 这是bmp的文件结构.     位图文件头(bitmap-file header)包含了图像类型.图像大小.图像