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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0414
Gonzo Shanアルファチャンネル付PNGの合成保存2解決


Gonzo Shan

リンク

2024/4/14(Sun) 00:58:24|NO.101520

背景画像にアルファチャンネル付きのPNGファイルを重ね合わせてそれをPNG形式で保存する
スクリプトを組もうとしています。

#include "a2d.hsp"
alCreateImageByFile 0, "d:\\project\\project-t\\haikeitest.png"
screen 1,576,1024
picload "d:\\project\\project-t\\ha1.png"
alCopyImageToScreen 1,0,0,0,576,1024,0,0
alSaveFile "d:\\project\\project-t\\haikeitest7.png","image/png",0,0,576,1024
stop

こんなふうに書いているんですが背景画像だけが保存されます。
背景画像を呼んだあと、picloadで重ね合わせ画像を呼ぶとうまくいくのですが
やりたいのは重ね合わせ画像の場所を指定して合成したいのです
上記のスクリプトでうまくいかないのはなぜでしょうか。ご教示おねがいいたします。



この記事に返信する


Tsuyoshi

リンク

2024/4/14(Sun) 13:17:58|NO.101522

Gonzo Shanさんのスクリプトにコメントを付けて説明させていただきます。


--------------------------------------------------------------------

#include "a2d.hsp"

// _菫ファイルをa2dのスクリーンID:0に読み込み
alCreateImageByFile 0, "d:\\project\\project-t\\haikeitest.png"

// HSPスクリーンをID:1で作成し、画像を読み込む
screen 1,576,1024
picload "d:\\project\\project-t\\ha1.png"

// ,覇匹濆んだ画像をHSPのスクリーンID:1に合成
alCopyImageToScreen 1,0,0,0,576,1024,0,0

// a2dのスクリーンID:0の内容をpngで保存
alSaveFile "d:\\project\\project-t\\haikeitest7.png","image/png",0,0,576,1024
stop

--------------------------------------------------------------------


まず、a2dのスクリーンIDとHSPのスクリーンIDは別物なので、
上のスクリプトだと,a2dのスクリーン(ID:0)で読み込んだ画像を
い任修里泙渊侘呂垢襪茲Δ砲覆辰討靴泙い泙后

なのでとい隆屬如HSPのスクリーン上で合成した画像をa2dのスクリーンにコピーしてから出力する必要があります。

また、の「alCopyImageToScreen 1,0」ですが、引数が逆で「alCopyImageToScreen 0,1」になります。
「alCopyImageToScreen a2dのID:0,HSPのID:0」になります。


下記サンプルスクリプト
とい隆屬膿靴靴a2dスクリーン(ID:1)を作って、で合成したHSPのスクリーンの内容をa2dのスクリーン(ID:1)にコピーしています。

--------------------------------------------------------------------

#include "a2d.hsp"

// _菫ファイルをa2dのスクリーンID:0に読み込み
alCreateImageByFile 0, "d:\\project\\project-t\\haikeitest.png"

// HSPスクリーンをID:1で作成し、画像を読み込む
screen 1,576,1024
picload "d:\\project\\project-t\\ha1.png"

// J儿硬澄alCopyImageToScreenの第1引数と第2引数が逆
// ,覇匹濆んだ画像をHSPのスクリーンID:1に合成
alCopyImageToScreen 0,1,0,0,576,1024,0,0

// 追加:a2dのスクリーンID:1を作成して、の内容をコピー
alCreateImage 1, 576,1024 // a2dスクリーンID:1として新規作成
alCopyScreenToImage 1,1, 0,0, 576,1024, 0,0 // の内容をコピー

// た靴靴作成したa2dスクリーンID:1の内容をpngで保存
alSelectImage 1 // 保存対象のa2dのスクリーンID(一応どれを保存するかを明示しておいた方がよい)
alSaveFile "d:\\project\\project-t\\haikeitest7.png","image/png",0,0,576,1024
stop

--------------------------------------------------------------------



Gonzo Shan

リンク

2024/4/14(Sun) 14:46:32|NO.101525

Tsuyoshi様

丁寧な説明ありがとうございます。おかげさまで解決いたしました。

私が勘違いしていたのは以下の内容です
 1.a2dのIDとHSPスクリーンIDが同じものだと思っていた
 2.alCopyImageToScreen ImageからScreenにコピー=HSPn画像(Image)をa2dの仮想Screen
  コピー ・・・真逆でしたね

ありがとうございました



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101520への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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