プロが教えるわが家の防犯対策術!

行き詰ったので質問させてください。
TIFファイル画像があり、それに文字を組み込みたいため以下のようなソースを書きました。

BufferedImage image = null;
image = ImageIO.read(file);

Graphics graphics = image.createGraphics();
graphics.setColor(Color.RED);
graphics.setFont(new Font("MSゴシック", Font.BOLD, 100));
graphics.drowString("TEST",100,200);
ImageIO.write(image,"tif", new File(file.toString()));

画像には「TEST」の文字が組み込まれたのですが、ファイルサイズが
50kbから500kb(約10倍)になり、サイズ変化させたくなかったため対策
を練ってます。
JPEGEncoderParamクラスなどを利用し、setQualityメソッドで画質を変えた
りもしたのですが、それでも元画像の7倍ほどになり、他の方法を取らざるを得ません。

画像のサイズは元サイズとほぼ変わらないような方法で、プログラムを組むことは
できますでしょうか。ちなみに画像は白黒です。

以上、お力添えください。

A 回答 (2件)

tiffの扱いはあんまり知らないけど、wikiによれば、「TIFFファイルでは、画像データの先頭部分に記録形式についての属性情報が記録される。

」なので、実際の画像の形式が何なのかによって、ファイルサイズは大きく変わるようです。
jpegやpng は2色しか使って無くても、1ドットにつき16から24ビット使うので、たとえ圧縮してもファイルサイズは大きくなります。
で、2色しかないなら、ビットマップの白黒モード+圧縮で保存するのがもっともサイズが小さいと思うけど、java でその書き込みができたか不明。

>JPEGEncoderParamクラスなどを利用し、
これだとたぶんtiffの中身もjpegになるし、tiff用の情報付加により、通常のjpeg保存よりもさらに大きいファイルになるようです。
以下のページをさらっと読んだかぎりでは、内部画像をBufferedImage.TYPE_BYTE_BINARY で2値画像で保持してれば、いけるかな???
http://hondou.homedns.org/pukiwiki/pukiwiki.php? …

無理なら、windowsのペイントで作っちゃうのが早そうな気がする。
ペイントで作るときも、先に一旦モノクロビットマップで保存しておいてから、保存時ファイル形式をtiffに変更して再保存としないと、tiffの中身は、多色ビットマップで保存されちゃったり、gifやpngだったりしてファイルサイズは大きくなるので要注意。
    • good
    • 0

Javaでは標準でTIFF形式のファイル書き込みはできなかったと記憶しています。


TIFと言う拡張子の別のファイル形式になっていませんか?

この回答への補足

回答ありがとうございます。
TIFへの書き込み及び読み込みはImageIO.getReaderFormatNamesメソッドの結果から対応可能となっております。
graphicsクラスを用いない別の方法でも構わないので、文字を画像に埋め込んで、それを元のサイズに近い状態で画像を保存する方法について、もしご存知でしたらご教示ください。よろしくお願いします。

補足日時:2013/07/03 20:39
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2013/07/06 01:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!