問題タブ [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.
java - Javaで画像を塗りつぶしたりペイントしたりするための最良の方法は何ですか?
JAIのMosaicDescriptorを使用して、1つの画像モザイクに結合している一連の画像があります。
ほとんどの画像は同じサイズですが、小さい画像もあります。不足しているスペースを白で埋めたいのですが、デフォルトでは、MosaicDescriptorは黒を使用しています。double []の背景パラメータを{255}に設定してみました。これにより、欠落しているスペースが白で埋められますが、他のフルサイズの画像の一部に変色が生じます。
私はどんな方法にもオープンです-これを行うにはおそらく多くの方法がありますが、ドキュメントをナビゲートするのは困難です。小さい画像をBufferedImageに変換し、空の領域でsetRGB()を呼び出すことを検討しています(ただし、バッチsetRGB()メソッドのスキャンサイズに何を使用するかはわかりません)。
私の質問は本質的に:
- (JAIまたはBufferedImageで)画像を取得し、特定のサイズにパディングを塗りつぶす/追加するための最良の方法は何ですか?
- 副作用なしにMosaicDescriptor呼び出しでこれを達成する方法はありますか?
参考までに、モザイクを作成するコードは次のとおりです。
java - Java (Swing) を使用して JPanel/JFrame で .wav サウンド ファイルを再生する
Swing GUI で開いたときに、ハードドライブの場所からファイルパスを使用して .wav サウンド ファイルを再生する方法のコード例が必要です。再生ボタンを表示したり、一時停止または停止したりする必要はありません。ウィンドウの「ファイル」から「サウンド」オプションを選択したときに再生したいだけです(その方法はすでに知っているので、説明する必要はありません)。
つまり、基本的には、JFrame 内のファイルパス (つまり、c:/cake/thereisnone.wav) から .wav サウンド ファイルを再生する方法です。
そして、後でそのサウンド ファイルにメソッドを簡単に適用するにはどうすればよいでしょうか。
また、JFrame の BufferedImage にメソッドを適用する方法を誰かが知っていれば、それも役に立ちます。
皆様、本当にありがとうございました!
java - Javaで画像ピクセルをボトムアップ順に保存するための最良の方法
Windows BMP 形式の画像を表すバイト配列があり、ピクセル データをコピーせずBufferedImage
に、ライブラリがそれを Java アプリケーションに として表示するようにしたいと考えています。
主な問題は、JDK の のすべての実装がRaster
イメージ ピクセルを上から下、左から右の順序で格納するのに対し、BMP ピクセル データは下から上、左から右の順序で格納されることです。これが補正されない場合、結果の画像は垂直方向に反転します。
最も明白な「解決策」は、SampleModel
のscanlineStride
プロパティを負の値に設定し、バンド オフセット (またはDataBuffer
の配列オフセット) を左上のピクセル、つまり配列の最後の行の最初のピクセルを指すように変更することです。 . SampleModel
残念ながら、負のscanlineStride
引数を指定するとすべてのコンストラクターが例外をスローするため、これは機能しません。
現在、リフレクションを使用してフィールドを負の値に強制することで回避していscanlineStride
ますが、可能であれば、よりクリーンで移植性の高い方法で実行したいと考えています。たとえば、カプセル化を壊さずに、ピクセルをボトムアップの順序で配置するRaster
またはをだます別の方法はありますか? または、ピクセル行を逆順に表示するandSampleModel
をラップするライブラリがどこかにありますか?Raster
SampleModel
次のアプローチは避けたいと思います。
- 画像全体をコピーする (パフォーマンス上の理由から。コードは 1 秒間に何百もの大きな (>= 1M ピクセル) 画像を処理する必要があり、アプリケーションは画像全体を利用できる必要がありますが、通常は小さな (しかし予測が難しい) 画像のみにアクセスします) ) 画像の一部です。)
- を変更し
DataBuffer
て座標変換を実行します (これは実際には機能しますが、バッファーはスキャンライン/ピクセル レイアウトについて知る必要がないため、別の「汚い」ソリューションです)。 Raster
および/またはインターフェースを最初から再実装するSampleModel
(互換性チェックが (少なくとも Sun JDK で) 実装されているため、特定のサブクラスが必要なSampleModel
ため、一般的なBottomUpSampleModel
ラッパー クラスは機能しません。)
clojure - BufferedImage の RGB 値の計算
次のスニペットを使用して、BufferedImage の setRGB で使用する 32 ビット整数を作成しています
色を書いた後、それらを読み返すと間違った色が明らかになり、ロジックに問題がありますか?
java - BufferedImageを使用してJavaのRGB色空間からグレースケールピクセル値を取得する
から返された RGBint 値をグレースケール値に変換する簡単な方法を知っている人はい<BufferedImage> getRGB(i,j)
ますか?
これを使用してRGB値を分割することにより、RGB値を単純に平均化するつもりでした。
そして平均的な赤、緑、青。
しかし、私はそのような単純な操作のために何かが欠けているに違いないと感じています...
別の質問に対する素晴らしい回答の後、私は自分が何を望んでいるのかを明確にする必要があります。
getRGB(i,j) から返された RGB 値を取得し、それをそのピクセルの「暗さ」を表す 0 ~ 255 の範囲の白値に変換したいと考えています。
これは平均化などによって達成できますが、数行を節約するための OTS 実装を探しています。
java - 実行時に JTextArea から Java コードを実行/コンパイルする方法は?
BufferedImage で描画され、JFrame の JDesktopPane に含まれる JInternalFrame があります。また、現在の JInternalFrame のペイントされた BufferedImage を入力として受け取る Java コード (関数) を記述したい JTextArea もあり、この入力に対して何らかの操作を行った後、JInternalFrame を新しい操作されたイメージでペイントする別の操作された BufferedImage を返します。
JTextArea の操作 Java コード:-
実行時にこの JTextArea Java コードを実行/コンパイルし、JInternalFrame に描画するための新しい操作イメージを取得するにはどうすればよいですか?
ここに私のメインクラスがあります:
(このクラスは実際のものではありませんが、JTextArea、JInternalFrame、Apply Button を含む基本的なインターフェース用に作成しました)
注: 上記のクラス JInternalFrame (ImageFrame) では、可視と宣言しましたが、可視ではありません。そのため、上記のクラスをコンパイルおよび実行している間、ImageFrame は表示されません。実行する前に、この問題を特定する必要があります。
java - カラーモデルに対するJavaのペイント速度
IndexColorModelを持つBufferedImageがあります。その画像を画面にペイントする必要がありますが、IndexColorModelを使用するとこれが遅いことに気付きました。ただし、アイデンティティアフィン変換を介してBufferedImageを実行すると、DirectColorModelを使用して画像が作成され、ペイントが大幅に高速化されます。これが私が使っているコードです
3つの質問が
あります1.IndexColorModelでペイントが遅くなるのはなぜですか?
2. IndexColorModelのペイントを高速化する方法はありますか?
3. 2.の答えが「いいえ」の場合、これはIndexColorModelからDirectColorModelに変換する最も効率的な方法ですか。この変換は画像のサイズに依存していることに気づきました。その依存関係を削除したいと思います。
助けてくれてありがとう
java - JFileChooserを使用してファイルを保存するには?
私のアプリケーションには、「名前を付けて保存」というメソッドがあり、アプリケーションのイメージをコンピューターにファイルに保存します。JFileChooser を使用して、ユーザーがファイルを保存する場所を選択できるようにしました。問題は、ユーザーがファイル形式を明示的に入力しない限り、拡張子なしでファイルを保存することです。[ファイル タイプ] ドロップダウン メニューに jpg、png などの形式を指定するにはどうすればよいですか。
また、画像ファイルを保存するためのファイル タイプ ドロップ メニューから拡張子を取得するにはどうすればよいですか。
java - Java BufferedImageサイズ変更の動作を指定する方法:平均化する代わりにピクセル行に最小値が必要
Java BufferedImageのサイズを変更して、垂直方向に小さくしますが、平均化のタイプを使用しないようにします。これにより、ソース画像のピクセル行が「空白」(白)の場合、宛先画像の対応する位置:「最小」操作。デフォルトのアルゴリズム(getScaledInstanceで指定)では、十分にきめ細かい制御ができません。次のロジックを実装したいと思います。
私はRescaleOpを読んでいますが、この機能を実装する方法を理解していません。これは確かに奇妙なタイプのスケーリングです。誰かが私にこれを行う方法についての指針を提供できますか?最悪の場合、宛先のImageBufferを予約して、擬似コードに続くピクセルをコピーできると思いますが、もっと良い方法があるかどうか疑問に思いました。
java - BufferedImage は任意の形式のファイルに書き込むことができますか?
Java に BufferedImage オブジェクトがある場合、ImageIO.write を使用して任意の形式で書き出せる可能性があるというのは正しいでしょうか (同じための Writer オブジェクトがある場合)。BufferedImageオブジェクトをjpgファイルに書き込もうとしたところ、空の画像ファイルが出力されましたが、pngファイルに書き込もうとするとうまくいきました。