- PR -

画像のjpeg変換

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-09 22:34
ありがとうございます。

おっしゃるとおり、メモリが原因なんですね。
ワンクリックでこれだけ消費するとだめですね。

jpeg => jpegの変換をしているのは、あまり画像に詳しくないのですが、
様々な媒体(この場合デジカメ)で作成される画像を、解像度を落としても
ある程度サイズを小さくしたい為です。

2つの例を書きましたが、4.7MBの方はjpeg変換をかける事で、100KB程度に
2.4MBでも40KBなど、かなり軽くなり、見た目も目視でそれほど悪いとは
感じません。

この8MB近いファイルだけ異常に遅く、しかも変換された画像は31KBで、
元ファイルからかなり暗く出力されます。

一応、取り込む時に最大ファイルサイズチェックを行っており、それを引き下げれば
済む話なのですが、作成してるWEBページ自体気軽な媒体から撮った画像を、取り込む
と言う機能的な利点が大きく損なわれてしまうので、できれば避けたいのですが・・。

また、よろしくお願いします。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 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);

未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-11 13:39
ありがとうございます。

おっしゃるように修正する事で、大きくパフォーマンスが上がりました。
全ての画像で試したわけでは無いですが、デジカメで出力した例の画像は
5秒ほどで無事出力されました。

画像の性質は分かりませんが、このファイルは標準では3575px * 4984pxサイズ
のJPGファイルでした。ブラウザで開くと大きいですが、普通に見れました。

ありがとうございました。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-07-11 17:17
追記です。

原因について分かりました(たぶん)。PhotoShopでこの15分もかかっていた画像を
開くとNikonのカラーフォーマットで構成されたものとのボックスが出ました。

時間もその為かかっていたようです、カラーフォーマットを外し、
同じ処理を行った場合、速度も10秒かからないくらい、明るさもほとんど
変わらずという結果でした。

ありがとうございました。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-07-11 20:39
ぐわぁー。あせって「Nikonのカラーフォーマット」でGoogleしました。
(拒否しないで、15分かけて処理しちゃうってのが、また不思議ですね。)

日本の情報技術はガラパゴス化が進んでいるとか。そんなもんでしょう。
Javaの日本語ドキュメンテーションも、超ひどいままだし…。
なぎせさんとか、まともな方が何人かおられるからまだいいが、日本のJava現場もあちこちでガラパゴス化が進行しているようです。

スキルアップ/キャリアアップ(JOB@IT)