问题标签 [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.

0 投票
4 回答
19405 浏览

java - 用于检测 CMYK 图像的 JAI ImageIO 的纯 Java 替代品

首先,我想解释导致问题的情况/要求:

在我们的 Web 应用程序中,我们不支持 CMYK 图像 (JPEG),因为 IE 8 及更低版本无法显示它们。因此,我们需要检测何时有人想要上传这样的图像并拒绝它。

不幸的是,Java 的 ImageIO 不会读取这些图像,也不会让我获得检测到的色彩空间。从调试来看,内部似乎JPEGImageReader获得了颜色空间代码 11(这意味着JCS_YCCK),但我无法安全地访问该信息。

在向读者查询图像类型时,我没有得到 CMYK 的任何信息,所以我可能会假设no image types = unsupported image.

我使用成像工具将源 CMYK 图像转换为 RGB,以测试它是否可读(当收到“不支持 CMYK”消息时,我尝试模拟管理员的步骤)。但是,JPEGImageReader不会读取该图像,因为它假定(源中的注释!)3 分量 RGB 颜色空间,但图像标题报告 4 个分量(可能是 RGBA 或 ARGB),因此IllegalArgumentException抛出了一个。

因此,ImageIO 不是一个选项,因为我无法可靠地获得图像的色彩空间,并且我无法告诉管理员为什么由于某些内部原因而无法接受原本精美的图像(它可以由浏览器显示)错误。

这让我尝试了 JAI ImageIO,它CLibJPEGImageReader做得非常好,可以正确读取我所有的测试图像。

但是,由于我们将我们的应用程序部署在一个 JBoss 中,该 JBoss 也可能托管其他应用程序,因此我们希望使它们尽可能地隔离。AFAIK,我需要将 JAI ImageIO 安装到 JRE 或以其他方式使本机库可用才能使用它们,因此其他应用程序也可能访问它们,这可能会导致副作用(至少我们会有进行大量测试以确保不是这种情况)。

这就是问题的解释,这里又来了: 是否有任何纯 Java 替代 JAI ImageIO 可以可靠地检测并可能转换 CMYK 图像?

提前致谢,

托马斯

0 投票
1 回答
216 浏览

java - JAI 图像调整瓶颈

我正在使用 JAI 库对一系列图像进行调整,每个图像的大小约为 1300x1000。我使用“重新缩放”调整像素强度,并使用 TiledImage.createGraphics() 方法中的 Graphics2D 对象添加文本和线条。然后我使用“subsampleaverage”调整图像大小以适应屏幕,并使用 Graphics2D.drawRenderedImage() 渲染到屏幕。到目前为止,几乎没有减速,渲染大约需要 40-60 毫秒。

但是,如果我只添加文本和行,显示会减慢到 100-200 毫秒。我似乎无法弄清楚为什么会这样,因为在调整像素强度之后或之前添加文本很好。

我一直在搜索该网站,但似乎找不到任何具体的答案。许多建议是使用 BufferedImages,但从 PlanarImages 转换为 BufferedImages 似乎也有减速问题。

0 投票
6 回答
18137 浏览

java - RenderedImage 到 BufferedImage 用于多页 tiff 读取

我正在使用 JAI 加载多页 TIFF 图像

然而,在最后一行我得到一个运行时错误:

我在尝试设置 BufferedImage 后清除了 RenderedImage,因此如果有另一种方法,我并不完全“需要”RenderedImage。

我尝试过:

这给出了一个 ArrayIndexOutOfBoundsException。我不确定为什么 pg1 的宽度和高度完全由 op1 设置,但可能有一个非常正当的理由。

0 投票
7 回答
10193 浏览

java - JAI 供应商名称 == null

所以我完成了我的应用程序的编码,以旋转需要 JAI 来操作 TIFF 的 TIFF 图像。

在 Eclipse 下工作时它工作正常,但是每当我为库构建一个胖 jar 并创建一个实现该库时(根据http://fjep.sourceforge.net/fjeptutorial.html),当我执行 java -jar Push 时。 jar \path\to\dir,它会一直运行,直到遇到它正在压缩和保存的部分:

它在该部分的第一行爆炸并显示以下消息:

0 投票
1 回答
1192 浏览

java - 如何将 PerspectiveTransform 应用于图形对象或图像?

我正在尝试使用 Java Advanced Imaging API 将方形图像绘制成梯形;但是,在创建 PerspectiveTransform 之后,我不确定如何将其应用于图形对象或图像。

0 投票
1 回答
204 浏览

image - Java2d 或 Java Advanced Imaging 是否需要由最终用户安装才能使用?

我正在制作一个将在小程序中运行的游戏引擎,它需要能够执行透视变换(对于模式 7)、基本变换(在自定义角点绘制图像)等事情,如果可能的话也可以其中哪些可以直接嵌入到我的小程序中而无需最终用户安装?

0 投票
5 回答
17107 浏览

windows-7 - “必须安装 JRE 1.3 或更高版本!” / "必须安装JDK 1.3 或更高版本!" 在 Windows 7 (x64) 上安装 JAI 1.1.3 时出错

我收到这些错误...

严重:必须安装 JRE 1.3 或更高版本!

严重:必须安装JDK 1.3 或更高版本!

...在 Windows 7 (x64) 上安装 JAI (Java Advanced Imaging) 1.1.3 时,JRE 7 (1.7) 安装在 "C:\Program Files\Java\jre7" 和 JDK 7 (1.7) 安装在 "C :\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/1_1_3/INSTALL.html#Windows上的说明没有详细说明,并假设您已经知道什么是什么。

编辑:如以下评论中所述,.exe 是独家安装,但我希望将它们安装到所有三个位置(也安装到“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 <---- 这是导致错误之一的原因。
  • jai-1_1_3-lib-windows-i586-jdk.exe <---- 这是导致错误之一的原因。

这些错误似乎与找不到 Java(JRE 和 JDK)的安装位置相同。

我设置了以下环境变量:

  • JAVA_HOME = C:\Program Files\Java\jdk1.7.0
  • 路径 = ...;C:\Program Files\Java\jdk1.7.0\bin

编辑:这让我认为问题比环境变量更深层次,因为 JRE 没有像 JDK 那样的环境变量(即 JAVA_HOME),对吧?

我尝试过的修复(无济于事):

  • 重新安装*。
  • 重新下载并重新安装*。
  • 将“C:\Program Files\Java\jre7\bin”添加到“路径”并重新安装*。
  • 将“C:\Program Files\Java\jre7”添加到“路径”中,不删除上述路径添加,并重新安装*。
  • 将“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 高级成像)图像 I/O”在我的系统上存在同样的问题。

0 投票
1 回答
914 浏览

java - Java JAI - 从许多较小的图像创建 1 个 BIG jpg 图像

在你们都说“这已经在某处......”之前,请让我说我已经看过并没有找到一个使用 JAI 平铺多个 jpg 并保存到磁盘而没有 Java 堆错误或其他内存问题的简单示例我无法在任何地方找到完整的工作代码集 - 它们似乎都写错/未经检查或根本不起作用......

帮帮我一些-BiWan Kenobi - 你是我唯一的希望!

0 投票
2 回答
1285 浏览

java - 用 jai 创建马赛克

我正在尝试将多个图像串联成一个,但一直遇到问题。为了隔离这一点,我创建了以下 POC,我正在尝试解决它,以便我了解如何使用 JAI API。

在 POC 中,我有两个图像“image1.gif”和“image2.gif”,它们都是 256x256。目标是将它们水平连接成一个 512x256 的图像“image3.png”。这是我使用 JAI 为此编写的代码。

我得到的是正确尺寸 512x256 的图像,第一张图像 (image1) 完全位于图像的左侧,而图像的右侧完全是黑色的。换句话说,就像我将 image1.gif 与 256x256 黑色方块连接起来一样。

我尝试将 MosaicType 更改为 MosaicDescriptor.MOSAIC_TYPE_BLEND,但这只是创建了一个类似的图像,只有左半部分由覆盖在 image2 顶部的 image1 组成(反之亦然),而右半部分仍然完全是黑色的。

我还尝试更改 ImageLayout 构造函数的前两个参数。这也不起作用——例如,我可以将 ImageLayout 的第一个参数设置为 -256,但随后 image1 显示在图像的右半部分,而图像的左半部分为黑色。

请帮忙!

0 投票
1 回答
60704 浏览

java - 我在哪里可以下载 Jai 和 Jai-imageio?

我需要获取TIFF图像的像素颜色,如果您知道任何替代方法JaiJai-imageio请告诉我。