ImageMagickのconvert関数とJavaを使った、

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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:nkasa No.1

回答回数11ベストアンサー獲得回数0

ポイント20pt

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

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

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

id:kunitz

ありがとうございます!

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

2004/07/22 01:22:04
id:noboru No.2

回答回数94ベストアンサー獲得回数0

ポイント20pt

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 に読み込んだ内容が入ります。

id:kunitz

ありがとうございます!

tmp_src.gif

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

よろしくお願いします。

2004/07/22 01:24:50
id:noboru No.3

回答回数94ベストアンサー獲得回数0

ポイント20pt

URLはダミーです。

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

id:kunitz

ありがとうございます!

2004/07/22 07:32:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません