人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ImageMagickのconvert関数とJavaを使った、
一時ファイルを使ったファイル加工プログラムを「パイプ」を使ったスマートな形にしたいです。下記ソースを直してください。

//ImageMagickで画像変換
Runtime.getRuntime().exec(”convert -resize 32x32 tmp_src.gif tmp_dst.gif”);

部分を何とかパイプを使った構造にしたいです。

ソースは下記です。
http://favlog.net/hatena/20040721_ImageMagickTest.zip

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:GIF ImageMagick Java Time. スマート
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● nkasa
●20ポイント

http://www.hatena.ne.jp/

はてな

なぜ、パイプを使う方が「スマート」なのでしょう。その理由を教えてください。

ファイル名固定はさすがにまずいですが、スレッドごとに違うファイル名にすれば、マルチスレッドで動いても問題ないはずです。

逆にパイプにこだわるとプラットフォームを制限することになりマイナス面が多いと思いますが。

◎質問者からの返答

ありがとうございます!

ファイルをいつ消すかという問題が無いのでスマートと考えました。どうでしょうか?


2 ● noboru
●20ポイント

http://www.nurs.or.jp/~sug/soft/java/java261.htm#sec614

Deep Side of Java〜Java 言語再入門 第2回 〜 java.lang.*

convert コマンドは出力ファイル名を - にすると標準出力に対して出力されるようになります。なのでこのようにすると良いです。

Process ps = Runtime.getRuntime().exec(”convert -resize 32x32 tmp_src.gif -”);

BufferedInputStream in = new BufferedInputStream(ps.getInputStream());

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buf = new byte[1000];

int n;

while ((n = in.read(buf)) > 0)

out.write(buf, 0, n);

in.close();

buf = out.toByteArray();

これで buf に読み込んだ内容が入ります。

◎質問者からの返答

ありがとうございます!

tmp_src.gif

もパイプからの内容に出来たら完璧です。

よろしくお願いします。


3 ● noboru
●20ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

URLはダミーです。

入力も標準入力にしたいなら convert -resize 32x32 - - です(入力ファイル名、出力ファイル名共にマイナス記号にする)。

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ