カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2017年06月19日(月)

簡単なループアニメーションを生成するソフト、テスト中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、塗りがうまく変化するかのテストなどしました。

まぁ、だいたいうまくいかったのですが、
テクスチャーの塗りの濃さ (アルファ値)
の変化がうまくいかなかったので、調べてみると、
ストローク の方に、テクスチャーの
濃さが保存されない不具合が見つかりました。

修正は終わってるので、次のアップデートでは直る予定ですが
今のところは、ロード後に透明度を再設定して乗りきってください。

・・・

ストロークループアニメーターの公開はまだなので、
気になる方は、とりあえず、ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

色々思うところがあって、
ちょっち補間エンジンを書き直し中。

結構、大変だなぁ。肩いたいよー。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月16日(金)

libpng + APNG パッチ、高さ 1 のフレームを含めると落ちる不具合修正

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、画像の高さが 1 のフレームを含む
アニメーション PNG を保存するときに落ちる不具合を修正しました。

保存には、libpng っていうライブラリーに、
アニメーション PNG を保存するためのパッチ をあてたものを
利用させていただいているのですが、途中に画像の高さが 1 の
フレームを含めると落ちるみたいです。
(libpng のバージョンは 1.6.29)

どこに不具合があるかは完全には特定できていないのですが
たぶん、全フレームの画像の高さが 1 とかなら落ちません。

たぶんですが、png_structp 構造体の prev_row
を png_calloc する部分が、画像の高さが 1 の場合には
スキップされるのですが、前のフレームの
prev_row ポインターが残っていて、結果的に
何やら不正な処理が走ってるみたいです。
(勘では、free による 2 重開放じゃないかと思う)

で、とりあえず、フレームの画像保存前に、
prev_row をチェックして、NULL じゃなかったら、
png_free してから NULL にしておくと直りました。

prev_row は、最初のフレームでは常に NULL なので
マルチフレームでなければ、問題なさそうです。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ちなみに、ストロークループアニメーターで、
中間フレーム数を 677 枚にしたら発現しました。

何故、677 枚だったかというと、
画像の中間フレームを 677 枚にしたときに、
1 フレーム間の動きがあまりにも小さくなって、
前のフレームと全く同じフレームが生成されはじめたからです。

で、前と全く同じ画像だからといって、空っぽの画像も
保存できなさそうだったので、かわりに、
1 x 1 の画像を保存すると、条件を満たしたわけですな。

まぁ、そんなにたくさんの中間フレームを生成することは
無いと思いますけど、こういう極端な値でテストすると
いろいろと不具合が見つかるので、品質を高めるためには有効です。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月15日(木)

透明色を含む GIF アニメーションをうまく保存できない不具合修正

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、透明色を含む GIF アニメーションを
うまく保存できない不具合を修正しました。

WIC のクセがすごいので、大変でしたが、一応
Windows 10 ではうまく動くようになりました。

GIF アニメーションファイルを作成する場合、
表示時間や透明色を設定する必要があります。

Native Image Format Metadata Queries では、
/grctlext/Delay や、/grctlext/TransparencyFlag などに相当します。

ところが、これらのプロパティを、 IWICMetadataQueryWriter
で設定すると、色々とおかしなことが起こります。

Windows Imaging Component and Animated GIF Files に、
どんなおかしな事が起こるかと、回避方法が載っていますが、
完全ではありませんし、直し方もよくありませんでした。

まず、プロパティを設定するタイミングですが、
WriteSourceCommit の間で設定すると無視されます。

ちなみに Windows Imaging Component and Animated GIF Files
にある、Commit の前で、QueryWriter を取得して、
Commit 後で設定する方法は、単に次のフレームに
設定されちゃうっぽいので、やらない方がいいと思います。

特に問題にならないはずの、/imgdesc/Left
の設定がずれるのでたぶんそうです。

なので、正しい設定場所は、
画像データーを書き込む前のタイミングです。

ところが、画像データーを書き込む前のタイミングで
/grctlext/ 配下のプロパティを書き込むと、
画像の書き込み時に設定されていた、
/grctlext/TransparencyFlag や、
/grctlext/TransparentColorIndex が
0 になっちゃいます。

おそらく、/grctlext/ 配下のプロパティを
1 つでも設定すると、その他のプロパティも
初期設定され、WriteSource ではそれらの値を
上書きしないために、おかしな値のままになるんでしょう。

直し方ですが、/grctlext/ 配下で必要なプロパティを
全て、自分で設定しちゃえば OK です。

/grctlext/TransparentColorIndex
は簡単には取得できませんが、パレットの
0 番目が必ず透明色になるようにしたり、
パレットから透明色のインデックスを
検索したりすれば計算できます。

自分は、 InitializeFromBitmap で計算したパレットの透明色を
0 番目の位置に移動。そのパレットで画像データーを減色して、
必ず透明色のインデックスが 0 となるようにしました。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

GIF の場合、背景色のインデックスは
フレーム毎に設定できません。

よって、透明を背景色としたい場合は、
フレーム毎の透明色のインデックスは
共通にする必要がありそうです。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月13日(火)

簡単なループアニメーションを生成するソフト、デバッグ中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトのテスト、デバッグ中です。

今日は、指定のサイズよりも 1 ピクセル大きな画像
が出力される場合がある不具合を修正しました。

浮動小数点の誤差で、拡大後のサイズ / 元のサイズ
で計算した拡大率を、元のサイズにかけると、
拡大後のサイズよりも大きくなる場合があるのが原因でした。

int とかの整数型で、両方とも正の数だと、
小数点以下は、切り捨てになるので、こういうこと
は起こらないのですが、浮動小数点はちょっと違うみたいですね。

そんなわけで整数の演算のように、
切り捨てっぽい割り算の結果を返す
関数を作って対応してみました。

r = a / b をやってみて、
r * b > a の間、
r をちょっとだけ小さくしていく
っていうプログラムです。

まぁ、最初の r は一番近い値を返している
はずだから、r をちょっとだけ小さくするループは
1 回しか回らないはずですけど、一応ループにしてみました。

負については、まだ考えたくないので
assert でごまかしてます。

inline double floor_div(double a, double b)
{
  ATLASSERT(a >= 0);
  ATLASSERT(b >= 0);
  
  double r = a / b;
  while (r * b > a)
  {
    if (!float_dec_abs(r))
      break;
  }
  
  return r;
}

float_dec_abs も自作の関数で、
引数の r の絶対値をちょっとだけ小さくしますが、
できない場合は、false を返します。

typedef unsigned _int64 DInt;
const DInt D_NUM_MASK   = 0x000FFFFFFFFFFFFF;
const DInt D_S_EXP_MASK = 0xFFF0000000000000;
const DInt D_EXP_MASK   = 0x7FF0000000000000;
const DInt D_EXP_1      = 0x0010000000000000;

inline bool float_dec_abs(double& x)
{
  // 絶対値を 1 単位減らす //
  
  DInt* p = (DInt*)&x;
  if ((*p & D_NUM_MASK) > 0)
  {
    *p -= 1;
    return true;
  }

  if ((*p & D_EXP_MASK) > 0)
  {
    *p |= D_NUM_MASK;
    *p -= D_EXP_1;
    return true;
  }

  ATLASSERT(FALSE); // あんまりこないだろう
  return false;
}

なかなかトリッキーな関数で、
double の内部表現によっては
正しく動かないかもしれませんが、
自分の環境では正しく動いてるみたいです。
(簡単なテストしかしてませんけど)

やってることは、double の仮数部が
0 より大きければ、仮数部を 1 減らし、
0 なら、指数部を 1 減らして、仮数部を最大値にします。
ただし、指数部も 0 な場合は、false で失敗です。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

c の frexp とかでやる方法もありそうですが、
かえってやっかいそうなので、断念しました。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月12日(月)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成完了

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、ホームページの作成が、
一応、完了しました。

ストロークのやり残した機能の実装も進めて、
あらたに実装する機能は、もう無さそうな感じ。

今日実装したのは、カラープロファイルの変換と、
メニュー項目のアイコン表示、ホームページを開く
メニューコマンド、キーボードショートカットキーかな。

実装といっても、ストロークの機能を呼び出すだけな
感じなので、プログラムの行数はあまりありません。

もう少しテストしたら、公開できるかな?

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月09日(金)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成中

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日も、引き続きホームページの作成中です。

ホームページを作成していると
仕様の微妙なところに気づくので
結構、有用だったりします。

今日は、自動トリミングすると、画像が拡縮されるという
説明が難しい謎の仕様を見つけたので、修正しました。

あと、設定ファイルを保存する場合に、
入力画像や出力先フォルダーのパスを
絶対パスで保存していたのですが、
それだと、ファイルをまとめて移動したり、
設定ファイルを公開したりしたときに不便なので、
設定ファイルのフォルダーからの
相対パスに変換して保存する仕様に変更しました。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

色とか線の太さとかも補間できるように
プログラムは書いてあるのですが、
全然テストしてないから、やらないと〜。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月08日(木)

簡単なループアニメーションを生成するソフト作成中、ホームページ作成開始

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日から、ホームページの作成を開始しました。

まだ途中なので、公開できませんけど、
簡単なアニメーションの作り方を
チュートリアルとして用意する予定です。

できるアニメーションはこんなの ↓ を予定しております。

お楽しみに。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月06日(火)

簡単なループアニメーションを生成するソフト作成中、インストーラーなど

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、インストーラーを作成したり、
コマンドライン引数で指定した設定ファイルを
開く処理を実装したりしました。

まぁ、特に書くことも無いので
新しいアニメーション例でも公開しときます。

手と紐つきの水風船アニメーションです。

最初の画像では手が上に、
風船は下にあるので、
逆の動きになります。

位相でいうと、完全に逆ですね。

さらに、水風船の位相を、
0.2 だけ遅らせると
下のようになります。

あんまり変わりませんが、
手の動きと、風船の動きが
完全に逆ではなくなって、
ちょっと複雑な動きになります。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月02日(金)

簡単なループアニメーションを生成するソフト作成中、位相をずらす機能

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、図形ごとに位相をずらす機能を実装しました。
例を見れば一目瞭然なので、例で説明しますね。

水ヨーヨーをつまんだ絵と、
それを単に上方向に平行移動したものを入力すると
下のようなアニメーションが生成されます。

まぁ、上下に動くだけなのでつまらないですね。

今度は、水風船の位相を、0.1 だけ遅らせて
アニメーションを生成すると、下のようになります。

手の動きと、風船の動きがずれるので、
ちょっと風船が、ゴムっぽくなりました。

胸・・・じゃなくて、ゴム風船が小さい場合は
これでも結構それっぽく見えたりします。

さらに、上方向に平行移動した方の風船を
縦につぶして、横に広げてみると・・・

ま、位相をずらさなくても、それっぽくはできるのですが、
ずらした方がよりリアルな感じを出せます。

位相の指定方法は、今のところ次のようにします。

位相を指定したい図形やレイヤーの名前に、
{-0.1} みたいな文字列を含めれば OK です。

アニメーションの生成には開始画像と終了画像を
指定するのですが、開始画像の方の名前に含めます。

{-0.1} の場合、位相が 0.1 遅れます。

また、ストロークループアニメーターには、
ストロークの画像内に指定されている
位相を何倍かにするオプションがあるので、
画像では、{1} を指定しておいて、
ループアニメーターで、-0.1 倍する方法もあります。

で、開始画像の位相が 0、終了画像の位相が 1。
復路がある場合、開始画像に戻った場合の位相は 2 です。

回転の角度で表すと、1 が 180°。2 が 360° なので、
0.5 は、90°、0.25 が 45° ですね。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

だいたいやる予定の機能は実装できました。
後は、テストとデバッグ、ホームページの作成かな。

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


2017年06月01日(木)

ストロークを利用して簡単なアニメーションを生成するソフト作成中、その11

ドロー系のお絵描きソフト、 ストローク で作成した 2 枚の画像から
アニメーションを生成するソフトを作成中です。

今日は、2 つの処理書きましたが、1 つは没でした。

1 つ目は、アニメーション PNG を保存するときに、
前のフレームを消さずに、オーバーレイ表示する
フラグを立てて保存する処理です。

その場合、透明度が 0 で前のフレームと同じ色を持つピクセルを
透明にしても同じ結果になるので、やってみました。

透明部分が増えるので、画像サイズが減るかと思ったのですが、
逆に増えたので、ボツにしました。

透明部分は、画像データーでいうと、
0 なので圧縮が効きやすいと思われたのですが、
画像の複雑さが増しちゃったためか、
ファイルサイズはかえって増えてしまいました。

ま、ファイルサイズが減る場合もあるかもしれませんけど、
あんまり期待できななそうなので、没です。

2 つめは、アニメーション PNG、アニメーション GIF
の 2 フレーム目以降を保存する場合に、前と同じ色をもつ
四辺をカットして、保存する領域を減らす処理です。

これはうまくいったので採用。

全体が動く場合は、あまり減りませんけど、
例えば、まばたきで目しか動かないアニメーション
とかだと、大幅にファイルサイズを削減できるでしょうね。

・・・

ま、気になる方は、とりあえず
ストロークでもお試しください。

ストロークループアニメーターのアイコン作成にも使用したので、
実用は可能なはずですよ。

最新版は、こちらのページからダウンロードできます

ストローク
ストローク ダウンロード
ストローク サンプル画像
ストローク 更新履歴
ご意見・ご要望連絡窓口


<< | 3/6PAGES | >>