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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
1120
WatsonHSPでのgif画像作成について(2)3解決


Watson

リンク

2023/11/20(Mon) 13:46:48|NO.100623

なんか前のやつ解決になってました。(誰かが押した)

HSPでgifアニメーションを作成する方法を知りたいです。(gifアニメーション表示ではなく)
自分なりに調べてみましたが、拡張子やSusieについて詳しくないもので…

よろしくお願いします



この記事に返信する


TOMATO

リンク

2023/11/20(Mon) 16:11:28|NO.100628

ffmpegでアニメーションGIFに変換するのが、一番簡単なのではないでしょうか?
「ffmpeg アニメーションgif」などでググってみると良いかと思います。



沢渡

リンク

2023/11/21(Tue) 18:46:32|NO.100645

「imgctl.dll」を使用する方法はどうでしょうか。
以下、作ってみたモジュールではDIBtoGIFとDIBtoGIFAniという
簡便に使える関数を使用していますが、
透過GIFとか「無限ループしないアニメーションGIF」のようなものを作る場合は、
細かい指定ができるDIBtoGIFexやDIBtoGIFAniExが必要になると思います。

//使い方: //「imgctl.dll」を以下のサイトからダウンロードし、ソースコードもしくは実行ファイルと同じフォルダに入れておくこと。 //https://www.vector.co.jp/soft/win95/prog/se222453.html // //gifsave p1,p2,p3,p4,p5 //p1 : 保存するGIFファイル名 //p2(0) : 1コマの画像の横幅。省略するか0以下を指定した場合は画像バッファの横幅いっぱい。 //p3(0) : 1コマの画像の縦幅。省略するか0以下を指定した場合は画像バッファの縦幅いっぱい。 //p4(0) : アニメーションGIFの1コマあたりの時間(1/100秒単位)。省略するか0以下を指定した場合は10になる。 //p5(0) : アニメーションGIFの最大コマ数。省略するか0以下を指定した場合は画像バッファの画像を可能な限り使用する。 // //現在の画像バッファの内容をアニメーションGIFとして保存します。 //現在のバッファの内容は、左上から順にp2×p3のサイズに切り刻まれ、 //それらがアニメーションGIFの1コマ1コマの絵として使用されます。 //p1以外のパラメータをすべて省略するか、「1コマしか存在しない」ような指定の仕方をした場合は、 //アニメーションGIFではなく通常のGIFファイルとして保存されます。 #module #uselib "imgctl.dll" #func DeleteDIB "DeleteDIB" int #cfunc DCtoDIB "DCtoDIB" int,int,int,int,int #func DIBtoGIF "DIBtoGIF" sptr,int,int #func DIBtoGIFAni "DIBtoGIFAni" sptr,int,int,int #define global gifsave(%1,%2=0,%3=0,%4=0,%5=0) _gifsave %1,%2,%3,%4,%5 #deffunc _gifsave str fname,int _w,int _h,int _time,int _num if _w<=0 : w=ginfo_sx : else : w=limit(_w,,ginfo_sx) if _h<=0 : h=ginfo_sy : else : h=limit(_h,,ginfo_sy) x_num=(ginfo_sx/w) : y_num=(ginfo_sy/h) if _num<=0 : num=limit(x_num*y_num,1) : else : num=limit(x_num*y_num,1,_num) dim hdib,num if num=1 { //1コマのみならアニメGIFではなく通常のGIFを出力 hdib(0)=DCtoDIB(hdc,0,0,w,h) DIBtoGIF fname,hdib(0),0 DeleteDIB hdib(0) return } repeat num hdib(cnt)=DCtoDIB(hdc,cnt\x_num*w,cnt/x_num*h,w,h) loop if _time<=0 : time=10 : else : time=_time DIBtoGIFAni fname,varptr(hdib),num,time repeat num DeleteDIB hdib(cnt) loop return #global //以下、使用例。 //同じフォルダに、HSPをインストールしたフォルダにある「sample\tamane2d\素材\baku.bmp」をコピーしてください。 picload "baku.bmp" gifsave "test.gif",96,96,,16 gifsave "test2.gif"



Watson

リンク

2023/11/24(Fri) 08:28:58|NO.100667

お二人方ありがとうございます!
解決しました!



記事削除

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

NO.100623への返信

マスコット

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

名前

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

削除用パスワード

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

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

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