问题标签 [indexed-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3915 浏览

c# - 如何将索引像素格式图像转换为 32 位图像?

我有一个图像,我得到并尝试使用 Graphics.FromImage(image) 加载到图形对象中,但是如果图像具有索引像素格式,则会引发异常。

有没有办法安全地转换索引图像?

更新:感谢乔的提示,只是将旧图像绘制在新图像上,而不是我试图转换它。这很有意义。

0 投票
1 回答
527 浏览

c++ - 如何确定索引模式 SDL_Surface 是否具有透明度?

我有我一直在使用的代码来加载并将SDL_Surfaces 转换为 OpenGL 纹理,但是我意识到它们只适用于 RGB(A) 表面。我需要将支持扩展到索引模式图像(有或没有透明度)。

最初,我正在研究::SDL_SetColorKey(),但它似乎只适用于 SDL blits。我已经阅读了SDL_SurfaceSDL_PixelFormatSDL_Color,然后开始草拟以下内容(//# 是伪代码):

所以,问题是:如何确定我传递给该例程的索引模式图像是否具有透明度?

0 投票
3 回答
1190 浏览

c# - 使用索引颜色表捕获程序的屏幕截图

网上有很多关于如何使用 C# 捕获和保存屏幕截图的教程。例如,我使用这个网站来获取我的解决方案:

它在大多数程序中都能正常工作,但我要捕获的程序使用 8 位索引颜色表。使用此代码拍摄的该程序的屏幕截图很奇怪。我的问题是,是否有人可以指出我在 C# 中使用索引颜色表捕获程序屏幕截图的正确方向?

为了帮助您帮助我,我将在下面描述我的发现和尝试的解决方案。

使用 8 位索引颜色表的全屏程序代码捕获的屏幕截图大部分是黑色(约 88 %),其中只有 17 种其他颜色。我没有看到这 17 种颜色的图案。在程序本身中,几乎所有 256 种颜色都被使用。我希望在黑色屏幕截图中也能找到 256 种颜色,这可能表示简单的一对一关系,但事实并非如此。

我还想指出,手动截取的屏幕截图是完美的(例如,当我将它们粘贴到 MS Paint 中时)。出于这个原因,我在手动截屏后尝试从 System.Windows.Forms.Clipboard.GetImage() 获取图像,但这会返回一个 COMobject,我不知道该怎么做。当然,它必须包含有效屏幕截图的信息,因为 MS Paint 知道如何从该 COM 对象中提取它。我怎样才能自己提取它,最好是在 C# 中?

但我的主要问题是:有人能指出我使用 C# 捕获带有索引颜色表的程序屏幕截图的正确方向吗?

0 投票
2 回答
6647 浏览

python - Python PIL:创建具有透明背景的索引彩色图像

我想知道如何创建具有透明背景和只有 2 种索引颜色(红色和蓝色)的图像以最小化文件大小?

更具体地说,我有两张要转换的黑白图像,一张转换为透明和蓝色,另一张转换为透明和红色。然后我想合并这两个图像。我可以使用常规的 RGBA 图像来做到这一点,但我真的希望对颜色进行索引以最小化文件大小。

理想情况下使用 PIL,但其他 Python 库也可以工作。

0 投票
2 回答
2555 浏览

opencv - 访问 C 中索引图像的调色板

假设我想按原样读取索引图像(不是 3 通道 24 位图像)我希望读取和修改索引图像的调色板。在opencv中,我没有遇到任何提取图像调色板的函数!我也想知道调色板的数据类型。我正在使用opencv在c中编码任何帮助?

0 投票
1 回答
2657 浏览

image - 将 uint32 中的索引图像转换为 double

在文档中阅读了以下内容im2double

课堂支持:

强度和真彩色图像可以是 uint8、uint16、double、logical、single** 或 int16。索引图像可以是uint8uint16doublelogical。二进制输入图像必须是合乎逻辑的。输出图像是双倍的

我正在使用 64 位机器(即 MATLAB 使用8 个字节来表示 double 类型的变量)。我有一个uint32类型的索引图像,我相信我应该能够将其转换为double类型,但im2double似乎不支持它,即我收到以下错误:

使用 im2double 时出错 预期输入编号 1,Image,是以下类型之一:

双,逻辑,uint8,uint16,int16,单

相反,它的类型是 uint32。

那么,如何将类型的矩阵(索引图像)转换uint32double

这一切都在MATLAB 2012a上

0 投票
4 回答
36121 浏览

c# - 索引图像上的图形

我收到错误:

“不能从具有索引像素格式的图像创建图形对象。”

在功能上:

我想问你,我该如何解决?

0 投票
0 回答
296 浏览

android - 使用 Android 的图形 API 的索引颜色

我正在为 Android 制作一个绘图程序,我想支持的功能之一是能够调整颜色并在绘图中实时查看颜色变化。

为了表示绘图,程序在内部存储了一个 2D int 索引数组(“颜色索引数组”),该数组引用了一个有限的调色板数组。当调整绘图的一部分时,颜色索引数组会随着实际绘制到屏幕上的位图(“屏幕位图”)一起调整。

使用这种方法,当调整颜色时,我必须循环整个颜色索引数组并重新渲染整个位图。我想避免遍历整个数组。

我尝试过的一件事是为调色板中的每种颜色保留一个单独的ALPHA_8位图。每个位图包含 0xff 像素设置为该颜色和 0x00 未设置。当颜色改变时,我使用具有新颜色的 Paint 在屏幕位图顶部绘制正在改变的颜色的 ALPHA_8 位图。

该解决方案有效,并且比天真的循环解决方案更有效,但我遇到的问题是setPixel不适用于 ALPHA_8 位图。它默默地失败了。相反,我需要为每个 ALPHA_8 位图维护一个单独的ByteBuffer,然后使用 copyPixelsFromBuffer来更新实际位图。这是不可取的,因为它将应该是 O(1) 的操作变成了 O(n) 的操作,并使我的 ALPHA_8 位图所需的存储空间增加了一倍。

我觉得我没有看到明显的解决方案。有什么我错过的吗?

0 投票
1 回答
3039 浏览

algorithm - MATLAB 中的 rgb2ind() 使用什么算法?

我正在阅读RGB2IND函数的文档,发现它使用Uniform QuantizationMinimum Variance QuantizationInverse Colormap,尽管我不太明白这些参数如何适合给定的算法。

是否有任何解释语言(MATLAB、JavaScript、Python)的代码示例可以准确地演示此函数在此语法中的工作方式?

0 投票
1 回答
330 浏览

matlab - 为什么不同的命令会导致不同的索引颜色图

我使用获取索引图和颜色图,[index_map,colormap] = imread('indexed_color_image.tif'); 然后使用两个不同的命令显示结果。他们的结果看起来非常不同。

你能解释一下吗?谢谢 !这是原始图像。(索引图像)。

在此处输入图像描述

案例1的结果与原始图像一样。但是案例 2 的结果很奇怪。看到这个

在此处输入图像描述