- - PR -
画像のjpeg変換
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-07-09 22:34
ありがとうございます。
おっしゃるとおり、メモリが原因なんですね。 ワンクリックでこれだけ消費するとだめですね。 jpeg => jpegの変換をしているのは、あまり画像に詳しくないのですが、 様々な媒体(この場合デジカメ)で作成される画像を、解像度を落としても ある程度サイズを小さくしたい為です。 2つの例を書きましたが、4.7MBの方はjpeg変換をかける事で、100KB程度に 2.4MBでも40KBなど、かなり軽くなり、見た目も目視でそれほど悪いとは 感じません。 この8MB近いファイルだけ異常に遅く、しかも変換された画像は31KBで、 元ファイルからかなり暗く出力されます。 一応、取り込む時に最大ファイルサイズチェックを行っており、それを引き下げれば 済む話なのですが、作成してるWEBページ自体気軽な媒体から撮った画像を、取り込む と言う機能的な利点が大きく損なわれてしまうので、できれば避けたいのですが・・。 また、よろしくお願いします。 |
|
投稿日時: 2008-07-10 10:05
その、15分もかかる画像の性質がよく分かりませんね。破損データ?、非標準データ?、???
単なるスケーリングだけが目的なら、AffineTransformを試してみてください: (ユーザアプリは別のBufferedImageを作らないし、drawImage()もしません。) BufferedImage original, scaled; ------------------------------------- double scalingFactor = 0.4; AffineTransform at = AffineTransform.getScaleInstance(scalingFactor, scalingFactor); AffineTransformOp ap = new AffineTransformOp(at, null); scaled = ap.filter(original, null); |
|
投稿日時: 2008-07-11 13:39
ありがとうございます。
おっしゃるように修正する事で、大きくパフォーマンスが上がりました。 全ての画像で試したわけでは無いですが、デジカメで出力した例の画像は 5秒ほどで無事出力されました。 画像の性質は分かりませんが、このファイルは標準では3575px * 4984pxサイズ のJPGファイルでした。ブラウザで開くと大きいですが、普通に見れました。 ありがとうございました。 |
|
投稿日時: 2008-07-11 17:17
追記です。
原因について分かりました(たぶん)。PhotoShopでこの15分もかかっていた画像を 開くとNikonのカラーフォーマットで構成されたものとのボックスが出ました。 時間もその為かかっていたようです、カラーフォーマットを外し、 同じ処理を行った場合、速度も10秒かからないくらい、明るさもほとんど 変わらずという結果でした。 ありがとうございました。 |
|
投稿日時: 2008-07-11 20:39
ぐわぁー。あせって「Nikonのカラーフォーマット」でGoogleしました。
(拒否しないで、15分かけて処理しちゃうってのが、また不思議ですね。) 日本の情報技術はガラパゴス化が進んでいるとか。そんなもんでしょう。 Javaの日本語ドキュメンテーションも、超ひどいままだし…。 なぎせさんとか、まともな方が何人かおられるからまだいいが、日本のJava現場もあちこちでガラパゴス化が進行しているようです。 |