HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0124
木村pngファイルの透明色要素が始末できません2解決


木村

リンク

2010/1/24(Sun) 17:45:48|NO.30128

 png形式の画像ファイルを利用しようとしているのですが
png特有の要素のせいで真っ当な画像ファイルとして利用できません。

 png形式の画像はHSPの基本命令では取得できません。(picload命令では不可能)
 よって、拡張プラグインhspcv.asのcvload命令を使って取得する事になります。

 ところが、一部のpng形式の画像ファイルには赤、緑、青の光度情報以外にも
透明度のような物を示す情報が含まれているようなのです。
 HSPのバッファには透明色情報を入れられなのでcvload命令では透明色を白と仮定して、
透明度が高いほど本来の色から白に近付いて行くように処理しているようなのです。
(ですので、pngの白と透明色がHSPに入ると同じ白(255,255,255)になってしまいます)

 ここまでであればまだ自分の技術力でも処理のしようがあるのですが、
何と一部のpngの半透明色データが白ではなく黒(0,0,0)に近付いてしまうのです。
 こうなると、元の色合いとは全然違って見えてしまいます。(例えば、透明色の部分が
黒ずんでしまう事で、目のパーツがクマが入ったように見えてしまう)
 一応、png形式データをペイントで召喚してbmp形式保存すればそれらの『クマ』は
発生しないのですが、データが結構多いのでプログラムを作って処理したいのです。

 前置きが長くなりましたが、質問としては
Q1,png形式の透明色の情報をHSPに放り込む事ができるのか?
Q2,できないとしたら、透明色と半透明色が白と黒に分かれてしまわないようにできるのか?
Q3,それも無理だとしたら、[ペイント召喚→BMP保存]の工程を手動ではなく自動でできないか?
 以上の3つです。ご指導お願いします。



この記事に返信する


GENKI

リンク

2010/1/24(Sun) 18:20:12|NO.30129

モジュールでは、標準でimgload命令があります。


> 透明度のような物を示す情報が含まれているようなのです。

アルファチャンネルと言います。


> 透明色を白と仮定して、

通常PNGファイルにはたいてい「背景色」情報が含まれます。(調べてみたら必須情報ではないみたい。)
表示するときにアルファチャンネルに対応していないソフトでは、通常は背景は背景色が使用されると思うのですが…そうなんですか?
たぶん、使用した画像の背景色に白や黒が設定されているものと思われます。


> Q1,png形式の透明色の情報をHSPに放り込む事ができるのか?

HSPでアルファチャンネルの情報も使いたい。というとでしょうか。
こんなモジュールありますよ。
http://d.hatena.ne.jp/As_hsp/20091213/1260714763
または、こんなの
http://sprocket.babyblue.jp/html/hsp_artlet2d.htm

PNGプラグインでAMpngがありますが、こちらはHSP2用なのでHSP3用にasファイルを書き換えないといけないのでお勧めしません。
このプラグイン、αチャンネルに強かった記憶があります。


> Q2,できないとしたら、透明色と半透明色が白と黒に分かれてしまわないようにできるのか?

上記のモジュール・プラグインを使うといいです。


> Q3,それも無理だとしたら、[ペイント召喚→BMP保存]の工程を手動ではなく自動でできないか?

今はちょっと処理を自動化するいいツールが思い浮かびません。
shin's PNG Editerは一括処理できたかな…?
ImageMagickならバッチ処理できるしわりと万能なので多分できると思いますが、インストールがめんどいかも。
とりあえず、上記のasさんのモジュールを使ってHSPで変換ツール作るといいかもしれません。



木村

リンク

2010/1/26(Tue) 02:49:53|NO.30163

 解決しました。おかげさまで、何とかスクリプトの目鼻が立ちそうです。
 GENKI様、とても有用なサイトを教えてくださってどうもありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.