以前
【メモ帳関係】C#とOpenCVでやる画像→txtなんちゃってコンバータと
【メモ帳関係】javaとJIFでやる画像→txtなんちゃってコンバータ を書きました。
内容的にはそれ+αな感じなのでお暇があれば見ていただけると嬉しいです。
—
・はじめに
前回javaとJIFで減色画像からtxtを出力するプログラムを作成しました。
今回はそこからニコニコ動画の投稿者コメント機能を用いて擬似的に動画上に画像の内容を表示出来るコード(ニワン語)に圧縮、変換を行う所までをするプログラムを作成しました。
・簡単な内容(ここだけ読めば大体わかる)
画像からtxt出力→javaで行いました。
txt圧縮→C#で別の方が作って下さったGUIプログラムを擬似的にCUIアプリケーションとして書き換えました。
しかし結果として画面に表示出来るものの絵として見るにはお粗末すぎる出来になってしまいました。
原因はわかっていますがそれを自動化するのは骨が折れそうですね。
・少し詳しく
画像は jpg,png,bmp に対応しており画像をバッチファイルにドロップすることで実行します。
@echo off
echo 引数1: %1
echo 画像→txt 処理中
java -jar %~dp0アプリ名.jar %1 15
echo txt→圧縮txt 処理中
%~dp0C#のアプリ.exe converted.txt
echo 画像→txt txt→圧縮txt への処理終了
pause > nul
こんな感じのバッチファイルを作ってjavaで作られたアプリケーションとC#で作られたアプリケーションを順番に実行します。
・行の解説
java -jar %~dp0アプリ名.jar %1 15
%1は画像のパスになります。15と書かれている部分は減色画像数で大体指定した色数まで色数を減らすので大体15種類の文字で画像→txt化が行われます。このjavaファイルは既にtxt化されたものを圧縮するだけの処理も出来るようになっています(txtか画像かを判断して処理を変えます)。
%~dp0C#のアプリ.exe converted.txt
converted.txtは上のjavaアプリケーションを通したあとの出力されるtxt名で固定なので圧縮のため次に読み込むtxt名はconverted.txtです(変えることも出来ます)
・javaの方の中身の例
1回めに減色処理を行なって実際何種類の文字が必要なのかをカウント
↓
2回めにカウントした回数だけレイヤーの数(色)が存在するので1色目が0xFFFFFFだったらそれ以外を空白にしたtxtを出力→2色目が0x000000だったらそれ以外を空白に・・を色の数だけ繰り返します。
↓
それを画像の左上から右下まで繰り返して出来たものをテキストに出力保存します。
↓
続きだるいから気が向いたら書きます。