問題タブ [bufferedimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
436 参照

java - Image オブジェクトを BufferedImage オブジェクトに変換する

Image オブジェクトが与えられた場合、グラフィックスを使用せずにそれを BufferedImage オブジェクトに変換するにはどうすればよいですか?

ありがとう。

(PS私はJava ImageIOライブラリを使用しています)

0 投票する
4 に答える
6676 参照

java - 2 つの BufferedImages 間のピクセル値を比較する最速の方法は?

タイプ TYPE_INT_BGR の BufferedImage があります。2 つの画像間の「距離」を計算するには、別の BufferedImage とピクセル単位で比較する必要があります。動作するものがありますが、遅いです。「参照」画像からピクセルを取得し、次のように RGB バイトに分割します。

r/g/b 値を候補画像の対応するピクセルと比較し、差の二乗を合計します。

この種の比較を行うためのより高速な方法はありますか? JRE ソースを覗いてみると、BufferedImage.getRGB() が実際にはラスターの構成要素の RGB 値を OR 演算していることがわかります。

私はそれを直接やってみるつもりですが、見逃したかもしれないJavaまたはサードパーティのAPIを介して、これを行うより良い方法がないのではないかと思います.

0 投票する
3 に答える
2571 参照

java - ファイル エクスポート用に JComponent のサイズを変更する

通常の「paintComponent(Graphics g)」メソッドを使用して多数のカスタム作成 JComponents を描画する JPanel があります。次のように、JLayeredPane を使用して、カスタム コンポーネントの表示順序を制御します。

ここで、このパネルを JPEG ファイルにエクスポートしたいと思いますが、サイズが異なります。次のコードを使用すると、目的のサイズの JPEG ファイルが正常に作成/エクスポートされますが、パネルの画面イメージ バージョンも新しいサイズに更新されます。うわぁ!

エクスポートに適した画像を「描画」できますが、実際にはこの新しい画像が表示されませんか?

ありがとう!


さて、またこの問題に戻ってきました……。

私が描いているシーンにはいくつかのテキストが含まれており、エンド ユーザーはグラフを「ポートレート」アスペクト比でエクスポートすることを望んでいます。シーンを新しい次元で再描画するのではなく、画像をスケーリングするだけなので、テキストが水平方向に大きく押しつぶされます。

とにかくそのあたり?

0 投票する
4 に答える
405 参照

java - この種の画像処理では、Perl がボトルネックになるのでしょうか?

私が考えている処理は次のとおりです。

  • 何千ものpngファイルがあります
  • それらのそれぞれをロードし、そのピクセルにアクセスする必要があります
  • 各ピクセルのチャネルは何らかの方法で処理され、バイナリ ファイルに書き込まれます。

ImageMagick ラッパーや、C 画像処理バックエンド用の他のラッパーなど、ある種のモジュールを使用することを考えていました。このタスクの実装に Perl を選択した場合、Perl を使用すると速度が低下しますか? Java で記述された (JDK の BufferedImage を使用する) ツールが既にあり、かなり高速です。Perl に同じ速度を期待するのはおかしいでしょうか?

0 投票する
2 に答える
12802 参照

java - 透明なBufferedImageをできるだけ早くクリアします

次のコードで作成された透過的なBufferedImageがあります(作成方法とは関係ありません):

イメージを再作成せずに、可能な限り最速の方法でイメージ(作成されたのと同じ状態の空のイメージ)をクリアするにはどうすればよいですか?イメージを再作成すると、GCに負担がかかり、VMが一時停止し、UIがフリーズします。

0 投票する
2 に答える
1247 参照

java - Java: 低ビット深度で Socket を介して BufferedImage を送信する

タイトルで十分だと思います。私は完全な品質の BufferedImage を持っており、ビット深度の低い OutputStream を介して送信したいと考えています。アルゴリズムでピクセルごとに品質を変更したくないので、それでも完全な品質です。

したがって、目標は、書き込みに必要なバイト数が非常に少ない OputStream を介して (フル解像度、フルサイズで) 画像を書き込むことです。

ありがとう、
マルティン

0 投票する
1 に答える
2496 参照

grails - Grails: BufferedImage をレスポンスに書き込む

サイズ変更メソッドを持つ ImageController があります。

ご覧のとおり、ディスクに BufferedImage インスタンス (サイズ変更された画像) を書き込みます。しかし、応答で画像を返したいので、ユーザーがサイズ変更メソッドを要求したときにサイズ変更された画像がブラウザに表示されます(またはダウンロードできるようになります)。ファイルサービスの問題のようなものです...

正しい使い方:

0 投票する
3 に答える
2185 参照

java - 16 ビット データの双一次補間での Java エラー

16 ビット データの双一次補間を使用すると問題が発生します。origImage と displayImage の 2 つの画像があります。AffineTransformOp を使用して、AffineTransform を介して origImage を表示領域のサイズである displayImage にフィルター処理したいと考えています。origImage は BufferedImage.TYPE_USHORT_GRAY タイプで、sun.awt.image.ShortInterleavedRaster タイプのラスターを持っています。ここに私が今持っているコードがあります

エラーを表示するために、2 つのグラデーション イメージを作成しました。1 つは 15 ビット範囲 (最大 32767) の値を持ち、もう 1 つは 16 ビット範囲 (最大 65535) の値を持ちます。以下は2つの画像です

15 ビット イメージ 代替テキスト

16 ビット イメージ 代替テキスト

これらの 2 つのイメージは同じ方法で作成されており、同じように見えるはずですが、16 ビット イメージの中央を横切る線に注目してください。最初はこれはオーバーフローの問題だと思っていましたが、ピクセル値が高い端ではなく、グラデーションの中心に現れているのは奇妙です。また、オーバーフローの問題であった場合、15 ビット イメージも同様に影響を受けたと思われます。

これに関するヘルプは大歓迎です。

なぜ誰も答えないのだろうと思っていたのですが、十分な情報を提供しましたか? さらに情報が必要ですか?

以下は、AffineTransform を生成するために使用するコードです。参照されるすべての変数は、ユーザー入力 (マウスの動き) に基づいて計算され、正しいはずです (私を含む多くの人々によってテストされています)。これがエラーの解決に役立つことを願っています。

ここで何が起こっているのかまだわかりません。提供できるヘルプがあれば、本当に感謝しています。また、参照用に実際の画像で発生したバグの例を添付しました。

これは、手のX線で発生しているバグです 代替テキスト

これは、親指と人差し指の間の領域に焦点を当てた拡大バージョンです。 代替テキスト

極端に白い領域ではバグが発生せず、グラデーション イメージのようにダイナミック レンジの中間の値で発生することに注意してください。

より多くの情報を発見しました。いくつかの変換を調整していたところ、恒等行列をフィルター処理するだけではバグが発生しないことがわかりました。また、整数で換算しても発生しません。整数以外の量で翻訳すると発生します。1 以外の量 (整数かどうか) でズームした場合にも発生します。うまくいけば、これが役に立ちます。

さらに実験を重ねた結果、バグは最大強度の半分 (65535/2 = 32767.5) の間の境界ピクセルで明らかに現れました。また、この値でのみ発生します。これが診断に役立つことを願っています!!

AlBlue の要請により、バグを生成する可能性がある私のアプリケーションとは完全に独立したコードがここにあります。元の投稿では、以下のコードで生成された画像グラデーションを含めましたが、効果をよりよく示すためにグラデーションの 1 つにズームインしたことに注意してください。0.5 変換された画像で効果が 4 回表示され、他の 2 つの画像では表示されません。また、このバグは、1 以外の量でスケーリングしているときに発生することにも注意してください。AffineTransform.getTranslateInstance() を AffineTransform.getScaleInstance(0.9, 0.9) に置き換えるだけで、バグも確認できます。

別の更新として、Fedora 10 でこれを試したところ、バグがまだ存在することがわかりました。

0 投票する
2 に答える
26247 参照

image - BufferedImageをJSPに表示する画像に変換する方法

BufferedImageJSPページに表示される画像に変換したいのですが。どうすればこれを達成できますか?