- - PR -
JPEGファイルのブロックノイズを減らすには?
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-14 02:09
JSPを使ってJPEGを生成していますが、出来上がったJPEGにブロックノイズが入り見栄えが良くありません。MAC OSXで表示させるには悪くないのですが、Windowsで表示させるとなぜかノイズの量が増えます。"com.hoge.Jpeg"クラスではGraphics2Dを使い、ストリングのみをdrawしています。Graphics2DのオブジェクトにはsetRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) を使用しています。
スピードよりも画像のクオリティー重視の環境ですので、ブロックノイズをなるべく取り除きたいと思っています。何か良いアイデアがあるでしょうか? <%@ page language="java" %> <%@ page import="com.sun.image.codec.jpeg.*"%> <%@ page import="java.awt.image.BufferedImage"%> <jsp:useBean id="jpeg" class="com.hoge.Jpeg" scope="session" /> <% ServletOutputStream sOStream = response.getOutputStream(); JPEGImageEncoder jIEncoder = JPEGCodec.createJPEGEncoder(sOStream); BufferedImage image = jpeg.getBufferedImage(); //set quality JPEGEncodeParam jpegEncodeParam = jIEncoder.getDefaultJPEGEncodeParam(image); jpegEncodeParam.setQuality(0.99f, true); jIEncoder.encode(image, jpegEncodeParam); jIEncoder.encode(image); sOStream.flush(); sOStream.close(); %> | ||||||||||||
|
投稿日時: 2005-07-14 09:02
A.K.渡邉さん、こんにちは。
既にご存知とは思いますが、Stringのように境界がはっきりし ているものを表現するのは、JPEGには苦手です。 MAC OSでは悪く無いとの事ですが、 GIFとか PNGという選択肢は無いのでしょうか? | ||||||||||||
|
投稿日時: 2005-07-14 09:42
A.K.渡邉さん
http://home.comcast.net/~rowland3/TextToJpeg.java こんなのありましたが...どうなんでしょう? クオリティは1.0fでも汚いですか? ブロックノイズではなく、画像の補間方法自体で汚いということはないでしょうか? | ||||||||||||
|
投稿日時: 2005-07-14 10:16
IE で画像を表示する場合、
HTMLの WIDTH HEIGHT がJPEGと一致しないと ギザギザが強く出ます。 他のブラウザ表示と比較してみましょう。 | ||||||||||||
|
投稿日時: 2005-07-14 10:19
unibon です。こんにちわ。
ブロックノイズでしょうか?モスキートノイズではないですか?
Mac の表示環境が違うだけで、見栄えがそう見えるだけかもしれません。たとえばコントラストが強いと、ノイズが潰れてノイズが目立たなくなる等が考えられます。Windows と Mac の両方で、スクリーンをキャプチャーしてペイントツールなどで拡大して RGB の輝度を比較されてみてはどうでしょうか。あるいはもっと簡単には、キャプチャーしたものを非圧縮の画像ファイルにして、もう一方の PC 環境で表示してみる等でも比較できます。
アンチエイリアスをオンにすると、その分、情報量が増えるので逆にノイズは出やすいかもしれません。 また、JPEG の圧縮だと色も関係してきます。背景と字のコントラストが低いとノイズは出やすいです。たとえば、背景と字を輝度ではなく色の違いで表示している場合は、ノイズが出やすいです。ためしに、黒地に白字や、白地に黒字でもノイズは出るでしょうか? #一番いいのは、JPEG 以外にしてしまうことですが... | ||||||||||||
|
投稿日時: 2005-07-16 16:33
返信ありがとうございます。
jpeg.jspが一番最初に書いたjspファイルとします。そしてそれを<img src="jpeg.jsp">としてHTML上で表示していました。結果見栄えの悪いJPEGが出来上がりました(JPEGで表示、というのが条件ですのでファイルタイプを変更できません)。しかし //最初のJSPに追加 File f = new File("xxxxxx/hoge.jpg"); ImageIO.write(image, "jpeg", f); として最初にローカルに保存し、そしてHTML上では <img src="./xxxxxx/hoge.jpg" > とやるとWindowsでもMacでも奇麗に表示することができました。同じBufferedImageオブジェクトを使っているんですけどね。理由が分かりません(笑)。JSPはライブでのファイル生成が苦手、とでも覚えておきます。 返信してくださった方に御礼を申し上げます。Kissingerさんの書き込みは自分には初耳でした。ファイルタイプを選べる場合にはJPEG以外にすることを心がけておきます。 |
1