問題タブ [jai]
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 - CMYK画像を検出するためのJAIImageIOの純粋なJava代替
まず、質問につながる状況/要件について説明したいと思います。
私たちのWebアプリケーションでは、IE 8以下ではCMYK画像を表示できないため、CMYK画像(JPEG)をサポートできません。したがって、誰かがそのような画像をアップロードして拒否したいときを検出する必要があります。
残念ながら、JavaのImageIOはそれらの画像を読み取らないか、検出された色空間を取得できません。JPEGImageReader
デバッグから、内部的に色空間コード11(つまり)を取得しているように見えJCS_YCCK
ますが、その情報に安全にアクセスできません。
リーダーに画像タイプを問い合わせると、CMYKは何も得られないので、と仮定するかもしれませんno image types = unsupported image
。
読み取り可能かどうかをテストするために、イメージングツールを使用してソースCMYK画像をRGBに変換しました(「CMYKはサポートされていません」というメッセージが表示されたときに管理者の手順をシミュレートしようとしました)。ただし、(ソースにコメント!)3コンポーネントRGB色空間を想定しJPEGImageReader
ているため、その画像は読み取られませんが、画像ヘッダーは4コンポーネント(おそらくRGBAまたはARGB)を報告するため、がスローされます。IllegalArgumentException
したがって、ImageIOはオプションではありません。これは、画像の色空間を確実に取得できず、内部的な理由で細かい画像(ブラウザで表示できる)が受け入れられない理由を管理者に伝えることができないためです。エラー。
これにより、私はJAI ImageIOを試してみました。このCLibJPEGImageReader
画像は、優れた機能を果たし、すべてのテスト画像を正しく読み取ります。
ただし、他のアプリケーションもホストする可能性のあるJBossにアプリケーションをデプロイしているため、それらを可能な限り分離しておく必要があります。ちなみに、JAI ImageIOをJREにインストールするか、ネイティブライブラリを使用できるようにする必要があります。そのため、他のアプリケーションもそれらにアクセスでき、副作用が発生する可能性があります(少なくとも多くのテストを行って、そうではないことを確認します)。
これが質問の説明です。ここでも、 CMYK画像を確実に検出して変換するJAI ImageIOに代わる純粋なJavaの代替品はありますか?
前もって感謝します、
トーマス
java - JAI 画像調整のボトルネック
JAI ライブラリを使用して、それぞれのサイズが約 1300x1000 の一連の画像を調整しています。「Rescale」でピクセル強度を調整し、TiledImage.createGraphics() メソッドの Graphics2D オブジェクトでテキストと線を追加します。次に、「subsampleaverage」で画面に合わせて画像のサイズを変更し、Graphics2D.drawRenderedImage() で画面にレンダリングします。この時点までは、レンダリングに約 40 ~ 60 ミリ秒かかるため、減速はほとんどありません。
ただし、テキストと線のみを追加すると、表示が 100 ~ 200 ミリ秒まで遅くなります。ピクセル強度の調整後または前にテキストを追加しても問題ないため、これがなぜなのかわかりません。
サイトを調べてみましたが、具体的な答えが見つからないようです。多くの提案は BufferedImages を使用することでしたが、PlanarImages から BufferedImages への変換にも速度低下の問題があるようです。
java - 複数ページのtiff読み取り用にRenderedImageをBufferedImageに
JAIを使用して複数ページのTIFF画像を読み込む
ただし、最後の行で、次のランタイムエラーが発生します。
BufferedImageを設定しようとした後、RenderedImageをクリアするので、これを行う別の方法がある場合、RenderedImageを正確に「必要」とはしません。
私が試みた:
そしてそれはArrayIndexOutOfBoundsExceptionを与えます。pg1の幅と高さがop1によって設定されるのとまったく同じ理由はわかりませんが、おそらく非常に正当な理由があります。
java - JAI ベンダー名 == null
そこで、JAI が TIFF を操作する必要がある TIFF 画像を回転させるアプリケーションのコーディングを終了しました。
Eclipse で作業している場合は正常に動作しますが、ライブラリ用のファット jar を作成し、それを実装するものを作成するたびに ( http://fjep.sourceforge.net/fjeptutorial.htmlごとに)、Java -jar プッシュを実行するとき。 jar \path\to\dir、圧縮して保存している部分に到達するまで実行されます。
そのセクションの最初の行で、次のメッセージが表示されます。
java - PerspectiveTransform をグラフィック オブジェクトまたは画像に適用するにはどうすればよいですか?
Java Advanced Imaging API を使用して正方形の画像を台形に描画しようとしています。ただし、PerspectiveTransform を作成した後、それをグラフィック オブジェクトまたは画像に適用する方法がわかりません。
image - Java2dまたはJavaAdvancedImagingを使用する前に、エンドユーザーがインストールする必要がありますか?
私はアプレットで実行されるゲームエンジンを作成しています。これは、パースペクティブ変換(モード7の場合)、基本変換(カスタムコーナーポイントでの画像の描画)などを実行できる必要があり、可能であれば次のいずれかを実行できます。それらのうち、エンドユーザーがそれらをインストールする必要なしに、アプレットに直接埋め込まれていますか?
windows-7 - 「JRE 1.3 以上をインストールする必要があります!」/ "JDK 1.3 以上をインストールする必要があります!" Windows 7 (x64) に JAI 1.1.3 をインストールする際のエラー
これらのエラーが発生しています...
重大: JRE 1.3 以降をインストールする必要があります。
重大: JDK 1.3 以降をインストールする必要があります。
...JAI (Java Advanced Imaging) 1.1.3 を Windows 7 (x64) にインストールする場合、JRE 7 (1.7) は「C:\Program Files\Java\jre7」にインストールされ、JDK 7 (1.7) は「C:\Program Files\Java\jre7」にインストールされます。 :\Program Files\Java\jdk1.7.0".
http://download.java.net/media/jai/builds/release/1_1_3/INSTALL.html#Windowsに従って、具体的にはこれが私がしたことです:
訪問:
- http://download.java.net/media/jai/builds/release/
- http://download.java.net/media/jai/builds/release/1_1_3/ (最新版)
ダウンロード:
- http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-windows-i586-jdk.exe
- http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-windows-i586-jre.exe
- http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-windows-i586.exe
- http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-windows-i586.jar.zip
編集 (質問): 誰かがこれらのファイルの違いを分析できれば幸いです。http://download.java.net/media/jai/builds/release/1_1_3/INSTALL.html#Windowsにある手順では、詳細が十分に説明されておらず、何が何であるかを既に知っていることを前提としています。
編集: 以下のコメントに記載されているように、.exe は排他的なインストールですが、3 つの場所すべて (「C:\Program Files (x86)\Sun Microsystems\Java Advanced Imaging 1.1.3」) にもインストールしたいと考えていました。 JDK と JRE の場所について)、Java 開発者としての仕事でどちらが必要になるかわからなかったからです。私の知る限り、JDK バージョンをインストールするだけで済み、.zip は同じものの手動インストールです。よくわかりませんが!未確認。
インストール済み:
- jai-1_1_3-lib-windows-i586.exe (正常にインストールされました)
- jai-1_1_3-lib-windows-i586-jre.exe <---- これがエラーの原因の 1 つです。
- jai-1_1_3-lib-windows-i586-jdk.exe <---- これがエラーの原因の 1 つです。
エラーは、Java (JRE および JDK) がインストールされている場所が見つからないという同じ問題のようです。
次の環境変数を設定しています。
- JAVA_HOME = C:\Program Files\Java\jdk1.7.0
- パス = ...;C:\Program Files\Java\jdk1.7.0\bin
EDIT:これは、JDK(つまり、JAVA_HOME)のようなJREの環境変数がないため、問題は環境変数よりも深いものだと思いますよね?
私が試した修正(無駄に):
- 再インストール*。
- 再ダウンロードと再インストール*。
- 「パス」に「C:\Program Files\Java\jre7\bin」を追加して再インストール※。
- 「Path」に「C:\Program Files\Java\jre7」を追加し、上記のPath追加を削除せずに再インストール※。
- 「パス」に「C:\PROGRA~1\Java\jre7」を追加し、正しいフォルダであることを確認し、再インストール※。
- JAVA_HOME を「C:\Program Files\Java\jdk1.7.0」から「C:\PROGRA~1\Java\JDK17~1.0」に変更し、Windows の元のフォルダに正しく転送されることを確認し、再インストール* .
- Java をスペース以外のフォルダー「C:\xxx\xxx\jdk1.7.0」に再インストールします。ここで、x はスペースではなく文字であり、「java -version」コマンド ラインで正しく動作することを確認し、再インストールします。 **。
*jai-1_1_3-lib-windows-i586-jre.exeをダウンロードしてインストール
**jai-1_1_3-lib-windows-i586-jdk.exe のダウンロードとインストール
これはどれもうまくいきませんでした。:(
私は試していません:
- 7 (1.7) より古い JRE の使用
どんな助けでも素晴らしいでしょう。
可能な(ハック)解決策:手動インストールはどうですか?それが私たちが職場で選択したことです。どのファイルがインストールされているかを把握することはできますか (できないのでインストールせずに)。
編集:「JAI (Java Advanced Imaging) Image I/O」にも私のシステムで同じ問題があることを確認しました。
java - Java JAI - 多くの小さな画像から 1 つの大きな jpg 画像を作成する
「それはすでにどこかにある...」と言う前に:-) JAIを使用して複数のjpgをタイル状に並べ、Javaヒープエラーやその他のメモリの問題なしにディスクに保存する簡単な例を見て、見つけられなかったと言わせてください。どこにもコードの完全な作業セットを見つけることができません-それらはすべて間違って書かれている/チェックされていないか、単に機能しないようです....
助けてくださいビワン・ケノービ - あなたは私の唯一の希望です!
java - jai でモザイクを作成する
複数の画像を 1 つに連結しようとしていますが、問題が発生しています。これを分離するために、JAI API の使用方法を理解するために解決しようとしている次の POC を作成しました。
POC には、256x256 の 2 つの画像 "image1.gif" と "image2.gif" があります。目的は、それらを水平方向に連結して、512x256 の単一の画像「image3.png」にすることです。これは、JAI を使用してこのために書いたコードです。
私が得るのは、正しいサイズの 512x256 の画像で、最初の画像 (image1) 全体が画像の左側にあり、画像の右側は完全に黒です。つまり、image1.gif を 256x256 の黒い正方形に連結したようなものです。
MosaicType を MosaicDescriptor.MOSAIC_TYPE_BLEND に変更しようとしましたが、これは同様の画像を作成するだけで、左半分は image1 が image2 の上に重ねられたもの (またはその逆) で構成され、右半分はまだ完全に黒です。
また、ImageLayout コンストラクターの最初の 2 つのパラメーターを変更してみました。ただし、これも機能しません。たとえば、ImageLayout の最初のパラメーターを -256 に設定できますが、image1 は画像の右半分に表示され、画像の左半分は黒になります。
助けてください!
java - JaiとJai-imageioはどこでダウンロードできますか?
画像のピクセルカラーを取得する必要があります。代替案をTIFF
ご存知の場合はお知らせください。Jai
Jai-imageio