Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
439eff6c
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
439eff6c
编写于
1月 22, 2016
作者:
J
jdv
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8041501: ImageIO reader is not capable of reading JPEGs without JFIF header
Reviewed-by: prr, psadhukhan
上级
4f4926fc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
86 addition
and
13 deletion
+86
-13
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+17
-13
test/javax/imageio/plugins/jpeg/JpegImageColorSpaceTest.java
test/javax/imageio/plugins/jpeg/JpegImageColorSpaceTest.java
+69
-0
test/javax/imageio/plugins/jpeg/nomarkers.jpg
test/javax/imageio/plugins/jpeg/nomarkers.jpg
+0
-0
未找到文件。
src/share/native/sun/awt/image/jpeg/imageioJPEG.c
浏览文件 @
439eff6c
...
...
@@ -1610,6 +1610,7 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader
int
ret
;
int
h_samp0
,
h_samp1
,
h_samp2
;
int
v_samp0
,
v_samp1
,
v_samp2
;
int
cid0
,
cid1
,
cid2
;
jboolean
retval
=
JNI_FALSE
;
imageIODataPtr
data
=
(
imageIODataPtr
)
jlong_to_ptr
(
ptr
);
j_decompress_ptr
cinfo
;
...
...
@@ -1711,17 +1712,15 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader
}
}
else
if
(
!
cinfo
->
saw_JFIF_marker
&&
!
IS_EXIF
(
cinfo
))
{
/*
* IJG assumes all unidentified 3-channels are YCbCr.
* We assume that only if the second two channels are
* subsampled (either horizontally or vertically). If not,
* we assume RGB.
*
* 4776576: Some digital cameras output YCbCr JPEG images
* that do not contain a JFIF APP0 marker but are only
* vertically subsampled (no horizontal subsampling).
* We should only assume this is RGB data if the subsampling
* factors for the second two channels are the same as the
* first (check both horizontal and vertical factors).
* In the absence of certain markers, IJG has interpreted
* component id's of [1,2,3] as meaning YCbCr.We follow that
* interpretation, which is additionally described in the Image
* I/O JPEG metadata spec.If that condition is not met here the
* next step will be to examine the subsampling factors, if
* there is any difference in subsampling factors we also assume
* YCbCr, only if both horizontal and vertical subsampling
* is same we assume JPEG color space as RGB.
* This is also described in the Image I/O JPEG metadata spec.
*/
h_samp0
=
cinfo
->
comp_info
[
0
].
h_samp_factor
;
h_samp1
=
cinfo
->
comp_info
[
1
].
h_samp_factor
;
...
...
@@ -1731,8 +1730,13 @@ Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImageHeader
v_samp1
=
cinfo
->
comp_info
[
1
].
v_samp_factor
;
v_samp2
=
cinfo
->
comp_info
[
2
].
v_samp_factor
;
if
((
h_samp1
==
h_samp0
)
&&
(
h_samp2
==
h_samp0
)
&&
(
v_samp1
==
v_samp0
)
&&
(
v_samp2
==
v_samp0
))
cid0
=
cinfo
->
comp_info
[
0
].
component_id
;
cid1
=
cinfo
->
comp_info
[
1
].
component_id
;
cid2
=
cinfo
->
comp_info
[
2
].
component_id
;
if
((
!
(
cid0
==
1
&&
cid1
==
2
&&
cid2
==
3
))
&&
((
h_samp1
==
h_samp0
)
&&
(
h_samp2
==
h_samp0
)
&&
(
v_samp1
==
v_samp0
)
&&
(
v_samp2
==
v_samp0
)))
{
cinfo
->
jpeg_color_space
=
JCS_RGB
;
/* output is already RGB, so it stays the same */
...
...
test/javax/imageio/plugins/jpeg/JpegImageColorSpaceTest.java
0 → 100644
浏览文件 @
439eff6c
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8041501
* @summary Test verifies if there is no JFIF & EXIF header
* and sampling factor is same of JPEG image, then
* imageIO should not override colorspace determined
* in IJG library.
* @run main JpegImageColorSpaceTest
*/
import
java.awt.Color
;
import
java.awt.image.BufferedImage
;
import
java.io.File
;
import
javax.imageio.ImageIO
;
public
class
JpegImageColorSpaceTest
{
public
static
void
main
(
String
args
[])
throws
Exception
{
String
fileName
=
"nomarkers.jpg"
;
String
sep
=
System
.
getProperty
(
"file.separator"
);
String
dir
=
System
.
getProperty
(
"test.src"
,
"."
);
String
filePath
=
dir
+
sep
+
fileName
;
System
.
out
.
println
(
"Test file: "
+
filePath
);
File
imageFile
=
new
File
(
filePath
);
BufferedImage
bufferedImage
=
ImageIO
.
read
(
imageFile
);
int
imageWidth
=
bufferedImage
.
getWidth
();
int
imageHeight
=
bufferedImage
.
getHeight
();
for
(
int
i
=
0
;
i
<
imageWidth
;
i
++)
{
for
(
int
j
=
0
;
j
<
imageHeight
;
j
++)
{
/*
* Since image is white we check individual pixel values from
* BufferedImage to verify if ImageIO.read() is done with proper
* color space or not.
*/
if
(
bufferedImage
.
getRGB
(
i
,
j
)
!=
Color
.
white
.
getRGB
())
{
// color space is not proper
throw
new
RuntimeException
(
"ColorSpace is not determined "
+
"properly by ImageIO"
);
}
}
}
}
}
test/javax/imageio/plugins/jpeg/nomarkers.jpg
0 → 100644
浏览文件 @
439eff6c
548 字节
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录