2016-08-12 45 views
1

我有一個.png文件,我已經成功上傳到Pebble Cloud SDK。如果我將「內存格式」標記爲「最佳」,則一切正常,但是當我查看像素(嘗試以編程方式更改它們)時,它們使用4位調色板。我不想用這個。Pebble Cloud SDK:如何強制8位圖像而不是調色板?

我回到我的資源,並選擇了「8位」,從下拉菜單中,但現在我得到一個編譯錯誤:

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

所以,我未指定的「細晶巖」爲平臺,我認爲這是黑白版本。這讓我新的編譯錯誤:

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

我假設它是未申報的「細晶巖」,但我運行仿真器是「粉筆」,所以我不知道爲什麼它會在意。

任何人都可以解釋使用「8位」內存格式的正確方法嗎?或者,更重要的是,要避免使用調色板?

我的長期目標是在簡單的圖像中取出每個非黑色像素,並將其更改爲某種隨機顏色。如果我使用調色板,顯然這不是一個選項,除非我在原始圖像中包含所有所需的顏色。 (即使這樣,調色板目前也傷害了我的大腦)。

編輯: 作爲一項測試,我製作了一張我的圖像版本,其中所有64種顏色都由Pebble支持。令我驚訝的是,圖像格式翻轉到8位(回想起來,調色板只能支持16種不同的顏色,所以這很有意義)。我仍然想知道一個手動方式來做到這一點。

回答

1

我建議使用優秀的圖書館GBitmap-Colour-Palette-Manipulator。它有許多有用的功能,但一個你可能會是最感興趣的是(從README.md):

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

This is function allows you to pass in a gbitmap, the color you want to replace and the target color. You also pass your BitmapLayer to this function so that it can automatically be marked dirty. This is an all in one function; it replaces the specified color and automatically updates the BitmapLayer. Pass NULL to *bml if you do not want to update a BitmapLayer (useful for gbitmaps on your action bar).

圖書館讓我們你專注於你的項目代碼,並採取低層次的護理細節。我已經成功地將它用於我的「Big Flip Clock」表面,該表面最初是Aplite/bw,但很容易使用此庫轉換爲PT/Color。

+1

這不是做我想要的東西,但我認爲它是指向正確的方向。謝謝! – Jenny

相關問題