Pebble Cloud SDK:如何强制8位图像而不是调色板?

时间:2016-08-12 19:29:58

标签: pebble-sdk

我有一个.png文件,我已成功上传到Pebble Cloud SDK。如果我将“内存格式”标记为“最佳”,则一切正常,但当我查看像素(尝试以编程方式更改它们)时,它们使用4位调色板。我宁愿不使用它。

我回到我的资源,从下拉菜单中选择“8位”,但现在我收到编译错误:

"can't use more than two bits on a black-and-whiteplatform.". 

所以,我没有将“aplite”定位为一个平台,我相信它是黑白版本。这让我得到了新的编译错误:

" error: 'RESOURCE_ID_SPIRO_BLACK_RED' undeclared (first use in this function)"

我认为它对于“aplite”是未声明的,但我正在运行的模拟器是“粉笔”,所以我不确定它为什么会关心。

有人能解释使用“8位”内存格式的正确方法吗?或者,更重要的是,要避免使用调色板?

我的长期目标是将每个非黑色像素置于简单图像中并将其更改为某种随机颜色。如果我使用调色板,显然这不是一个选项,除非我在原始图像中包含所有所需的颜色。 (即使在那时,调色板目前也在伤害我的大脑。)

编辑: 作为测试,我使用Pebble支持的所有64种颜色制作了我的图像版本。令我惊讶的是,图像格式翻转到8位(回想起来,调色板只能支持16种不同的颜色,所以这很有意义)。我仍然想知道一种手动方式来做到这一点。

1 个答案:

答案 0 :(得分:1)

我建议使用优秀的图书馆GBitmap-Colour-Palette-Manipulator。它有许多有用的功能,但你可能最感兴趣的是(来自README.md):

void replace_gbitmap_color(GColor color_to_replace, GColor replace_with_color, GBitmap *im, BitmapLayer *bml);
  

这个函数允许你传入一个gbitmap,你想要的颜色   替换和目标颜色。您还将BitmapLayer传递给   此功能使其可以自动标记为脏。这是个   一体化功能;它会自动替换指定的颜色   更新BitmapLayer。如果您不想将NULL传递给* bml   更新BitmapLayer(对于操作栏上的gbitmaps非常有用)。

图书馆让您专注于项目代码并处理低级细节。我已成功地在我的" Big Flip Clock"表盘最初是Aplite / bw,但很容易使用这个库转换为PT / Color。