当前位置: 首页 > 编程语言 > C#

将24bpp位图转换为1bpp分享

时间:2023-04-11 11:46:52 C#

将24bpp位图转换为1bpp我正在尝试转换一个小位图图像。我想任何不是100%白色的像素都可以转换为黑色。我试过Bitmapoutput=sourceImage.Clone(newRectangle(0,0,sourceImage.Width,sourceImage.Height),PixelFormat.Format1bppIndexed);在1bpp输出中仍有一些较亮的像素保持白色。实现此转换的最快方法是什么?我可以修改Clone()调用的强度阈值吗?试试这个,从非常快的1bpp转换:将图像转换为从此处复制的1bpp时的阈值?.以上就是C#学习教程:Convert24bppbitmapto1bpp的全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—privatestaticunsafevoidConvert(Bitmapsrc,Bitmapconv){//将源和目标锁定在内存中,用于不安全访问varbmbo=src.LockBits(newRectangle(0,0,src.Width,src.Height),ImageLockMode.ReadOnly,src.PixelFormat);varbmdn=转换。LockBits(newRectangle(0,0,conv.Width,conv.Height),ImageLockMode.ReadWrite,conv.PixelFormat);varsrcScan0=bmbo.Scan0;varconvScan0=bmdn.Scan0;varsrcStride=bmbo.Stride;varconvStride=bmdn.Stride;byte*sourcePixels=(byte*)(void*)srcScan0;byte*destPixels=(byte*)(void*)convScan0;变种srcLineIdx=0;varconvLineIdx=0;varhmax=src.Height-1;varwmax=src.Width-1;for(inty=0;y0.01f)if(!(sourcePixels[srcIdx]==0&&sourcePixels[srcIdx+1]==0&&sourcePixels[srcIdx+2]==0)){//目标字节为像素(1bpp,即每字节8像素)varidx=convLineIdx+(x>>3);//屏蔽掉p目标字节中的像素位destPixels[idx]|=(byte)(0x80>>(x&0x7));}}}src.UnlockBits(bmbo);conv.UnlockBits(bmdn);顶一下,如涉及侵权请点击维权联系管理员删除如转载请注明出处:

最新推荐
猜你喜欢