如何在c#中调整8bpp位图图像的大小?
这是用于重复识别的 我可以将图像转换为8bpp位图,但由于它是一种索引像素格式,我不知道如何将其调整得更小。有没有办法不把它改成更高的像素格式(这会引入更多不需要的颜色)如何在c#中调整8bpp位图图像的大小?,c#,image,bitmap,C#,Image,Bitmap,这是用于重复识别的 我可以将图像转换为8bpp位图,但由于它是一种索引像素格式,我不知道如何将其调整得更小。有没有办法不把它改成更高的像素格式(这会引入更多不需要的颜色) 谢谢通常,缩小图片时,会对颜色进行某种插值。假设你有一张2x2的图片,上面两个像素是黑色的,下面两个是白色的。您想将其缩小为1x2图片。这两个像素将是黑色和白色的混合,即灰色 BB --> GG WW 其中G=灰色(50%黑色,50%白色),B=黑色,W=白色 但是,最终图像中的灰色在原始图像中不存在。对于索引图
谢谢通常,缩小图片时,会对颜色进行某种插值。假设你有一张2x2的图片,上面两个像素是黑色的,下面两个是白色的。您想将其缩小为1x2图片。这两个像素将是黑色和白色的混合,即灰色
BB --> GG
WW
其中G=灰色(50%黑色,50%白色),B=黑色,W=白色但是,最终图像中的灰色在原始图像中不存在。对于索引图像,这是一个问题。 您可以选择其中一个像素(随机或使用某种算法):
或插值,然后在索引中选择最接近插值结果的颜色。所以也许你的指数中没有50%的灰色,但是你有40%的灰色。这很接近,所以你可以选择它。如果没有足够接近的颜色,可以使用第一种方法
第三,您可以转换为普通位图,调整大小,然后再转换回索引,但根据您对问题的措辞,您似乎希望避免这种情况。这是2D计算机图形学中的常见问题。需要问的总体问题是你想要完成什么。是:
作为参考,传统的2D控制台,如Neo Geo,采用了“直线下降”的方法,这导致了其古雅和锯齿状的图形外观。现代控制台总是以16、24或32位颜色对图像进行重采样,有时甚至使用浮点表示颜色值。谢谢。我正在按照您的建议使用原始像素格式调整原始图像的大小,然后使用标准web调色板(0、51、102、153、204、255)将其转换为8bpp。结果更好,但仍然不够好。处理后仍有不同像素颜色的图像,它们在原始图像中看起来完全相同。有没有更好的方法来进行重复识别?听起来你真的很想保留原来的调色板。在这种情况下,您唯一能做的就是删除扫描线。例如,如果您的原始图像是1000 x 1000,并且您希望将其转换为100 x 100,则必须删除9条扫描线,然后保留一条。我已到处搜索,但仍然找不到有关删除扫描线的任何信息。你能给我看一个C代码示例吗?试着用
InterpolationMode.NearestNeighbor
绘制图像。
BB --> BW
WW