草庐IT

c# - Lockbits 跨越 1bpp 索引图像字节边界

我正在从一张1bpp索引图像剪切并粘贴到一张新图像。一切正常,直到起始像素是8的除数。在下面的代码中,步幅等于相对于矩形宽度的值,直到我达到字节边界。那么步幅等于整个页面的宽度。varcroppedRect=newRectangle((int)left,(int)top,(int)width,(int)height);BitmapDatacroppedSource=_bitmapImage.LockBits(croppedRect,ImageLockMode.ReadWrite,BitmapImage.PixelFormat);intstride=croppedSource.Strid

c++ - 图像从 24 bpp 格式转换为 16 bpp 格式

我有一张图像,即使用WindowsGDI调用(24bpp)绘制的图像,我需要将此图像转换为16bpp。这是在WindowsMobile上。24bpp-RGB(rrrrrrrrggggggggbbbbbbbb)16bpp-RGB(rrrrrggggggbbbbb)为此我使用下面的代码for(intx=0;x>3|(*iPixel&0x001F0000)>>5;}代码工作正常,但性能不是很好,因为我是逐像素修改的。您能否就此转换提出任何可能的改进建议?提前致谢 最佳答案 您的代码不完整;您不显示指针的类型或如何递增它们。您对每个像素执行

c++ - 如何将 GDI 8-bpp 索引位图转换为 RGB 位图?

我正在尝试将8-bpp索引位图转换为RGB位图,但我没有成功。第一个问题是GetPalette()返回的调色板不包含256个唯一数字。到目前为止,这是我的代码:BitmapDatabitmapData;intpaletteSize=b->GetPaletteSize();ColorPalettecolorPalette;b->GetPalette(&colorPalette,paletteSize/4);b->LockBits(newGdiplus::Rect(0,0,b->GetWidth(),b->GetHeight()),0,b->GetPixelFormat(),&bitmap

c++ - 1bpp 单色 BMP

我运行了一个演示bmp文件格式帮助程序“DDDemo.exe”来帮助我可视化32x1像素bmp文件(单色)的格式。我对这两个标题部分没问题,但似乎不理解颜色表和像素位部分。我制作了两个32x1像素的bmp文件来帮助我进行比较(请参阅附件)。有人能帮我理解“像素位”与颜色图的关系吗?更新:经过反复试验,我终于能够编写一个32x1像素的单色BMP。尽管它与附加图像具有不同的像素位,但此工具有助于标题和颜色映射概念。谢谢大家的意见。 最佳答案 PIXELBITS中未设置的位指的是第一个颜色表条目(0,0,0),黑色,设置的位指的是第二个颜

c++ - 使用 -O3 优化和奇数间距填充 16bpp 图像时崩溃

我编写了一个非常简单的代码来用一个常量值(1024)填充32x3216bpp图像。图像缓冲区由std::vector托管。我的图像的间距/步幅(即两个连续行之间的字节数)足够大以容纳整行,但设置为奇数。这是我的代码:#include#includeintmain(){intwidth=32;intheight=32;intpitch=width*2+1;std::vectorimage(height*pitch);uint8_t*buffer=&image[0];for(inty=0;y(buffer+y*pitch);for(intx=0;x我正在使用带有gcc4.6.1(Ubunt

C# 将 32bpp 图像转换为 8bpp

我正在尝试使用C#将32bpp的屏幕截图图像转换为8bpp(或4bpp或1bpp)格式。我已经看过几个关于类似主题的stackoverflow答案,大多数建议使用以下代码进行变体:publicstaticBitmapConvert(Bitmapoldbmp){Bitmapnewbmp=newBitmap(oldbmp.Width,oldbmp.Height,PixelFormat.Format8bppIndexed);Graphicsgr=Graphics.FromImage(newbmp);gr.PageUnit=GraphicsUnit.Pixel;gr.DrawImageUnsc

ios - 如何在 iOS 上使用 libtiff 编写 1bpp tiff?

我正在尝试使用libtiff将UIImage写为tiff。问题是,即使我将它写为每像素1位,当我期望更接近100k或更少时,文件仍然在2-5MB范围内出现。这是我得到的。-(void)convertUIImage:(UIImage*)uiImagetoTiff:(NSString*)filewithThreshold:(float)threshold{TIFF*tiff;if((tiff=TIFFOpen([fileUTF8String],"w"))==NULL){[[[UIAlertViewalloc]initWithTitle:@"Error"message:[NSStringst

c - 在 C 中加载 8bpp 灰度 BMP

我无法理解BMP格式,我知道它应该很简单,但不知何故我遗漏了一些东西。我以为是2个header,后面跟着定义图像的实际字节,但数字不相加。例如,我只是想将这个BMP文件加载到内存中(640x4808bpp灰度),然后将它写回另一个文件。据我了解,有两个不同的headerBITMAPFILEHEADER和BITMAPINFOHEADER。BITMAPFILEHEADER是14个字节,BITMAPINFOHEADER是40个字节(这个取决于BMP,我怎么说那是另一个故事)。无论如何,BITMAPFILEHEADER通过其参数bfOffBits表示位图位从偏移量1078开始。这意味着还有10