トップページ > 記事閲覧
LoadSoftImageで読み込んだpngのパレットについ
名前:ウィア 日時: 2015/10/24 17:56

問題が切り分け切れていないのですが、どうにも分からなくなってしまったので質問させてください。 現在、LoadSoftImageを使い、pngファイルを読み込み、SetPaletteSoftImageでパレットデータを書き換えて色違いの画像を作ろうとしています。 しかしながら、表示される画像の色が変化していません。 そこで、GetPaletteSoftImageで読み込んだファイルのパレットデータを確認してみたところ、IndexNo0-255まで、三色ともに0が返ってきます。 実験的に画像をbmpに変更したところ、正常に色違いの画像が表示されました。 しかし、透過の機能が必要なため、pngを利用したいと思います。 この状態が 1、仕様(もともとこの機能はpngでは使えない) 2、画像ファイルがおかしい 3、プログラムがおかしい のどれなのかがわからない状態でして、参考意見をいただければと思います。 なお、bmpファイルに_aつきのファイルを用意するのもやっては見たのですが、SoftImageを経由するからなのかは分かりませんが、透過されませんでした。 使用している画像はEdgeで作った256色画像で、Pictbearで読み込んでもインデックスカラーと表示されます。
メンテ

Page: 1 |

Re: LoadSoftImageで読み込んだpngのパレットについ ( No.1 )
名前:管理人 日時:2015/10/26 00:15

私の手元でパレット形式の png ファイルを作成して LoadSoftImage で読み込み GetPaletteSoftImage でパレットを確認してみましたが、パレットカラーの値は正常でした 今年の夏頃にパレットタイプの png ファイルが正常に読み込めないバグを修正しましたので、 よろしければこちらの暫定最新版をお試しになってみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > なお、bmpファイルに_aつきのファイルを用意するのもやっては見たのですが、SoftImageを経由するからなのかは分かりませんが、透過されませんでした。 はい、_a つきのファイルの読み込みは LoadSoftImage では対応していません > しかし、透過の機能が必要なため、pngを利用したいと思います。 アルファチャンネル付きのパレット形式というのは割りと特殊なので、もしかしたらDXライブラリが アルファチャンネル付きのパレット形式に対応できていなくて、フルカラー画像として読み込まれている可能性があります 手元ではアルファチャンネル付きのパレット形式の png ファイルを作成できる環境が無いので、もし 最新版でも正常に読み込むことができなかった際は、申し訳ないのですがアルファチャンネル付きパレット形式の png ファイルを以下のメールアドレスに送っていただけないでしょうか? m(_ _;m BQE00322(あっとまーく)nifty.com ( (あっとまーく)を@に置き換えてください )
メンテ
Re: LoadSoftImageで読み込んだpngのパレットについ ( No.2 )
名前:管理人 日時:2015/10/27 03:23

メールありがとうございます、添付していただいた pngファイルで手元でもアルファチャンネル付きの パレットの値が正常に取得できない現象を確認しました ソースを追っていったところ、思い切りアルファチャンネル付きのパレット形式の場合は フルカラー画像に変換するようにしてしまっていました パレット形式のまま読み込むように修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: LoadSoftImageで読み込んだpngのパレットについ ( No.3 )
名前:ウィア 日時:2015/10/27 16:52

お忙しいところ、対応ありがとうございます。 用意していただいた最新版で、こちらでも今まで使用していた画像ファイルで色違いが用意できることを確認しました。 ただ、一点だけ気になったのですが、 関数リファレンスの説明によりますと、SetPaletteSoftImageの最後の引数int aは現在何の仕事もしていないから0を指定するようにと書かれています。 しかし、今回私の画像の色違いを表示させるにあたっては、この部分が有効になってました。0だと何も表示されず、数値を上昇させるにしたがってくっきりと表示されるようになっていきました。 これは、今回の変更に伴ってそうなった正常な動作であって、意図しない現象というわけではないですよね? さほど重要な点ではないのですが、この部分だけ確認させていただいて解決にしたいと思います。 (なんとなく、LoadSoftImageでよみこんで、任意の色を別な色に取り替えつつ、その色の部分だけ半透明に出来るというのは、新しいことが出来るような気もするのですが)
メンテ
Re: LoadSoftImageで読み込んだpngのパレットについ ( No.4 )
名前:管理人 日時:2015/10/30 01:27

> 関数リファレンスの説明によりますと、SetPaletteSoftImageの最後の引数int aは現在何の仕事もしていないから0を指定するようにと書かれています。 > しかし、今回私の画像の色違いを表示させるにあたっては、この部分が有効になってました。0だと何も表示されず、数値を上昇させるにしたがってくっきりと表示されるようになっていきました。 > これは、今回の変更に伴ってそうなった正常な動作であって、意図しない現象というわけではないですよね? はい、正常な動作です ただ、引数 a が有効になるのは今回ウィアさんから送っていただいたようなアルファチャンネル付きのパレット形式画像の場合のみになります アルファチャンネルなしの一般的なパレット形式画像の場合はこれまでと同様に引数 a の値は意味のないものとなります
メンテ
Re: LoadSoftImageで読み込んだpngのパレットについ ( No.5 )
名前:ウィア(解決) 日時:2015/10/30 07:27

回答、ありがとうございます。 今回の質問はこれで解決としたいと思います。 お忙しい中ありがとうございました。
メンテ
Re: LoadSoftImageで読み込んだpngのパレットについ ( No.6 )
名前:まっつぁん 日時:2015/10/30 19:59

横入りですみません。 自分も同じ現象で悩んでいました。 こちらのDxライブラリを適用すると自分も解消することができました。 ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存