Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Jérome Perrin
erp5
Commits
1552f457
Commit
1552f457
authored
1 year ago
by
Jérome Perrin
Browse files
Options
Download
Email Patches
Plain Diff
patches/OFSImage: update monkey patch with Zope-4.8.9 version
parent
51c97c86
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
11 deletions
+15
-11
product/ERP5Type/patches/OFSImage.py
product/ERP5Type/patches/OFSImage.py
+15
-11
No files found.
product/ERP5Type/patches/OFSImage.py
View file @
1552f457
...
...
@@ -22,14 +22,14 @@ from io import BytesIO
from
zExceptions
import
Forbidden
def
getImageInfo_with_svg_fix
(
data
):
data
=
str
(
data
)
data
=
bytes
(
data
)
size
=
len
(
data
)
height
=
-
1
width
=
-
1
content_type
=
''
# handle GIFs
if
(
size
>=
10
)
and
data
[:
6
]
in
(
'GIF87a'
,
'GIF89a'
):
if
(
size
>=
10
)
and
data
[:
6
]
in
(
b
'GIF87a'
,
b
'GIF89a'
):
# Check to see if content_type is correct
content_type
=
'image/gif'
w
,
h
=
struct
.
unpack
(
"<HH"
,
data
[
6
:
10
])
...
...
@@ -39,15 +39,16 @@ def getImageInfo_with_svg_fix(data):
# See PNG v1.2 spec (http://www.cdrom.com/pub/png/spec/)
# Bytes 0-7 are below, 4-byte chunk length, then 'IHDR'
# and finally the 4-byte width, height
elif
((
size
>=
24
)
and
(
data
[:
8
]
==
'
\211
PNG
\r\n\032\n
'
)
and
(
data
[
12
:
16
]
==
'IHDR'
)):
elif
(
size
>=
24
and
data
[:
8
]
==
b
'
\211
PNG
\r\n\032\n
'
and
data
[
12
:
16
]
==
b
'IHDR'
):
content_type
=
'image/png'
w
,
h
=
struct
.
unpack
(
">LL"
,
data
[
16
:
24
])
width
=
int
(
w
)
height
=
int
(
h
)
# Maybe this is for an older PNG version.
elif
(
size
>=
16
)
and
(
data
[:
8
]
==
'
\211
PNG
\r\n\032\n
'
):
elif
(
size
>=
16
)
and
(
data
[:
8
]
==
b
'
\211
PNG
\r\n\032\n
'
):
# Check to see if we have the right content type
content_type
=
'image/png'
w
,
h
=
struct
.
unpack
(
">LL"
,
data
[
8
:
16
])
...
...
@@ -55,29 +56,32 @@ def getImageInfo_with_svg_fix(data):
height
=
int
(
h
)
# handle JPEGs
elif
(
size
>=
2
)
and
(
data
[:
2
]
==
'
\377\330
'
):
elif
(
size
>=
2
)
and
(
data
[:
2
]
==
b
'
\377\330
'
):
content_type
=
'image/jpeg'
jpeg
=
BytesIO
(
data
)
jpeg
.
read
(
2
)
b
=
jpeg
.
read
(
1
)
try
:
while
(
b
and
ord
(
b
)
!=
0xDA
):
while
(
ord
(
b
)
!=
0xFF
):
b
=
jpeg
.
read
(
1
)
while
(
ord
(
b
)
==
0xFF
):
b
=
jpeg
.
read
(
1
)
while
(
ord
(
b
)
!=
0xFF
):
b
=
jpeg
.
read
(
1
)
while
(
ord
(
b
)
==
0xFF
):
b
=
jpeg
.
read
(
1
)
if
(
ord
(
b
)
>=
0xC0
and
ord
(
b
)
<=
0xC3
):
jpeg
.
read
(
3
)
h
,
w
=
struct
.
unpack
(
">HH"
,
jpeg
.
read
(
4
))
break
else
:
jpeg
.
read
(
int
(
struct
.
unpack
(
">H"
,
jpeg
.
read
(
2
))[
0
])
-
2
)
jpeg
.
read
(
int
(
struct
.
unpack
(
">H"
,
jpeg
.
read
(
2
))[
0
])
-
2
)
b
=
jpeg
.
read
(
1
)
width
=
int
(
w
)
height
=
int
(
h
)
except
:
pass
except
Exception
:
pass
# MONKEY PATCH START HERE
# Handle SVG
elif
(
"</svg>"
in
data
):
elif
(
b
"</svg>"
in
data
):
content_type
=
'image/svg+xml'
# MONKEY PATCH ENDS HERE
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment