发布于2021-01-16 00:38 阅读(792) 评论(0) 点赞(9) 收藏(0)
关于带有Alpha通道的JPEG是否有效似乎存在一些争论。我一直理解为正确的答案是JPEG FAQ中的“ No”。(这在有关Stack Overflow的另一个问题中得到了重申。)
但是,Sun的ImageIO库中的Java的JPEGImageWriter会通过alpha通道愉快地写入和读取灰度图像和RGB图像,即使到目前为止我已经尝试过在Linux上几乎没有应用程序能够正确加载此类JPEG。过去已将其报告为错误,但Sun的答复是这些是有效文件:
这不是Image I / O错误,而是提交者提到的其他应用程序中的缺陷。IIO JPEGImageWriter能够使用包含Alpha通道(在IJG本地源代码中称为“ NIFTY”颜色空间,例如RGBA,YCbCrA等)的颜色模型编写图像,但是许多应用程序并不知道这些颜色空间。因此,即使这些由IIO JPEG编写器编写的图像都符合JPEG规范(对各种颜色空间的可能性视而不见),某些应用程序仍可能无法识别包含alpha通道的颜色空间,并且可能会引发错误或导致损坏。图片,如提交者所述。
希望与这些其他不支持Alpha的应用程序保持兼容性的开发人员应编写不包含Alpha通道(例如TYPE_INT_RGB)的图像。想要以JPEG格式写入/读取包含Alpha通道的图像的开发人员可以使用Image I / O API进行操作,但是需要意识到那里的许多本机应用程序与YCbCrA和RGBA不太兼容格式。
有关更多信息,请参阅《图像I / O JPEG元数据格式规范和使用说明》:http : //java.sun.com/j2se/1.4.1/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata。 html
关闭为“不是错误”。xxxxx @ xxxxx 2003-03-24
我正在使用创建此类文件的Java应用程序,并希望编写一些C代码来尽可能快地加载这些文件。(本质上,问题在于Java ImageIO库在解压缩这些文件时非常慢,我们希望通过JNI将加载器替换为本机代码,以改善此问题-目前是性能瓶颈。)
在这里,您可以看到尝试使用我相信使用的各种Linux软件查看灰度+ alpha和RGB + alpha图像的结果libjpeg
:
具有各种程序的Alpha通道视图的灰度图像http://mythic-beasts.com/~mark/all-alpha-bridges.png
因此,似乎每种情况下色彩空间都只是被误解了。中唯一允许的值jpeglib.h
是:
/* Known color spaces. */
typedef enum {
JCS_UNKNOWN, /* error/unspecified */
JCS_GRAYSCALE, /* monochrome */
JCS_RGB, /* red/green/blue */
JCS_YCbCr, /* Y/Cb/Cr (also known as YUV) */
JCS_CMYK, /* C/M/Y/K */
JCS_YCCK /* Y/Cb/Cr/K */
} J_COLOR_SPACE;
...这看起来没有希望。
如果我使用example.c
from的稍微修改后的版本加载这些图像libjpeg
,则在读取标题后,每张图像的cinfo.jpeg_color_space
and值cinfo.out_color_space
如下:
gray-normal.jpg: jpeg_color_space is JCS_GRAYSCALE, out_color_space is JCS_GRAYSCALE
gray-alpha.jpg: jpeg_color_space is JCS_CMYK, out_color_space is JCS_CMYK
rgb-normal.jpg: jpeg_color_space is JCS_YCbCr, out_color_space is JCS_RGB
rgb-alpha.jpg: jpeg_color_space is JCS_CMYK, out_color_space is JCS_CMYK
因此,我的问题是:
显然,对于更普遍的问题,至少还有其他两种解决方案:
...但是前者会涉及很多代码更改,并且尚不清楚如何进行后者。无论如何,我认为如何使用libjpeg
这样的文件加载问题可能是更普遍的兴趣之一。
任何建议将不胜感激。
您已经尝试过libjpeg-turbo吗?它应该能够解码RGBA,并且已经有Java包装器。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/70481/1915d2b5660f3ed0a43d/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!