0004905: Bug in ODF output format that ONLY crops the first image correctly (Patch from Adam Stein)
svn: r17483
This commit is contained in:
parent
a440d1c307
commit
b49ca7608e
210
src/ImgManip.py
210
src/ImgManip.py
@ -106,114 +106,6 @@ def image_dpi(source):
|
|||||||
|
|
||||||
return dpi
|
return dpi
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_dpi
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_dpi(source):
|
|
||||||
"""
|
|
||||||
Return the dpi found in the image header. None is returned if no dpi attribute
|
|
||||||
is available.
|
|
||||||
|
|
||||||
:param source: source image file, in any format that PIL recognizes
|
|
||||||
:type source: unicode
|
|
||||||
:rtype: int
|
|
||||||
:returns: the DPI setting in the image header
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
import PIL.Image
|
|
||||||
except ImportError:
|
|
||||||
import sys
|
|
||||||
print >> sys.stderr, _("WARNING: PIL module not loaded. "
|
|
||||||
"Image cropping in report files will not be available.")
|
|
||||||
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
img = PIL.Image.open(source)
|
|
||||||
except IOError:
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
dpi = img.info["dpi"]
|
|
||||||
except AttributeError, KeyError:
|
|
||||||
dpi = None
|
|
||||||
|
|
||||||
return dpi
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_dpi
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_dpi(source):
|
|
||||||
"""
|
|
||||||
Return the dpi found in the image header. None is returned if no dpi attribute
|
|
||||||
is available.
|
|
||||||
|
|
||||||
:param source: source image file, in any format that PIL recognizes
|
|
||||||
:type source: unicode
|
|
||||||
:rtype: int
|
|
||||||
:returns: the DPI setting in the image header
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
import PIL.Image
|
|
||||||
except ImportError:
|
|
||||||
import sys
|
|
||||||
print >> sys.stderr, _("WARNING: PIL module not loaded. "
|
|
||||||
"Image cropping in report files will not be available.")
|
|
||||||
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
img = PIL.Image.open(source)
|
|
||||||
except IOError:
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
dpi = img.info["dpi"]
|
|
||||||
except AttributeError, KeyError:
|
|
||||||
dpi = None
|
|
||||||
|
|
||||||
return dpi
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_dpi
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_dpi(source):
|
|
||||||
"""
|
|
||||||
Return the dpi found in the image header. None is returned if no dpi attribute
|
|
||||||
is available.
|
|
||||||
|
|
||||||
:param source: source image file, in any format that PIL recognizes
|
|
||||||
:type source: unicode
|
|
||||||
:rtype: int
|
|
||||||
:returns: the DPI setting in the image header
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
import PIL.Image
|
|
||||||
except ImportError:
|
|
||||||
import sys
|
|
||||||
print >> sys.stderr, _("WARNING: PIL module not loaded. "
|
|
||||||
"Image cropping in report files will not be available.")
|
|
||||||
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
img = PIL.Image.open(source)
|
|
||||||
except IOError:
|
|
||||||
dpi = None
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
dpi = img.info["dpi"]
|
|
||||||
except AttributeError, KeyError:
|
|
||||||
dpi = None
|
|
||||||
|
|
||||||
return dpi
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# image_size
|
# image_size
|
||||||
@ -241,107 +133,7 @@ def image_size(source):
|
|||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# image_cropped_size
|
# image_actual_size
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_actual_size(x_cm, y_cm, x, y):
|
|
||||||
"""
|
|
||||||
Calculate what the actual width & height of the image should be.
|
|
||||||
|
|
||||||
:param x_cm: width in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param y_cm: height in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param x: desired width in pixels
|
|
||||||
:type source: int
|
|
||||||
:param y: desired height in pixels
|
|
||||||
:type source: int
|
|
||||||
:rtype: tuple(int, int)
|
|
||||||
:returns: a tuple consisting of the width and height in centimeters
|
|
||||||
"""
|
|
||||||
|
|
||||||
print "[Actual Size] CM = [", x_cm, ",", y_cm, "], Desired = [", x, ",", y, "]"
|
|
||||||
ratio = float(x_cm)*float(y)/(float(y_cm)*float(x))
|
|
||||||
|
|
||||||
if ratio < 1:
|
|
||||||
act_width = x_cm
|
|
||||||
act_height = y_cm*ratio
|
|
||||||
else:
|
|
||||||
act_height = y_cm
|
|
||||||
act_width = x_cm/ratio
|
|
||||||
|
|
||||||
print "[Actual Size] Size = [", act_width, ",", act_height, "]"
|
|
||||||
return (act_width, act_height)
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_cropped_size
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_actual_size(x_cm, y_cm, x, y):
|
|
||||||
"""
|
|
||||||
Calculate what the actual width & height of the image should be.
|
|
||||||
|
|
||||||
:param x_cm: width in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param y_cm: height in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param x: desired width in pixels
|
|
||||||
:type source: int
|
|
||||||
:param y: desired height in pixels
|
|
||||||
:type source: int
|
|
||||||
:rtype: tuple(int, int)
|
|
||||||
:returns: a tuple consisting of the width and height in centimeters
|
|
||||||
"""
|
|
||||||
|
|
||||||
print "[Actual Size] CM = [", x_cm, ",", y_cm, "], Desired = [", x, ",", y, "]"
|
|
||||||
ratio = float(x_cm)*float(y)/(float(y_cm)*float(x))
|
|
||||||
|
|
||||||
if ratio < 1:
|
|
||||||
act_width = x_cm
|
|
||||||
act_height = y_cm*ratio
|
|
||||||
else:
|
|
||||||
act_height = y_cm
|
|
||||||
act_width = x_cm/ratio
|
|
||||||
|
|
||||||
print "[Actual Size] Size = [", act_width, ",", act_height, "]"
|
|
||||||
return (act_width, act_height)
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_cropped_size
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
def image_actual_size(x_cm, y_cm, x, y):
|
|
||||||
"""
|
|
||||||
Calculate what the actual width & height of the image should be.
|
|
||||||
|
|
||||||
:param x_cm: width in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param y_cm: height in centimeters
|
|
||||||
:type source: int
|
|
||||||
:param x: desired width in pixels
|
|
||||||
:type source: int
|
|
||||||
:param y: desired height in pixels
|
|
||||||
:type source: int
|
|
||||||
:rtype: tuple(int, int)
|
|
||||||
:returns: a tuple consisting of the width and height in centimeters
|
|
||||||
"""
|
|
||||||
|
|
||||||
ratio = float(x_cm)*float(y)/(float(y_cm)*float(x))
|
|
||||||
|
|
||||||
if ratio < 1:
|
|
||||||
act_width = x_cm
|
|
||||||
act_height = y_cm*ratio
|
|
||||||
else:
|
|
||||||
act_height = y_cm
|
|
||||||
act_width = x_cm/ratio
|
|
||||||
|
|
||||||
return (act_width, act_height)
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# image_cropped_size
|
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def image_actual_size(x_cm, y_cm, x, y):
|
def image_actual_size(x_cm, y_cm, x, y):
|
||||||
|
@ -790,7 +790,6 @@ class ODFDoc(BaseDoc, TextDoc, DrawDoc):
|
|||||||
self.StyleList_notes = self.uniq(self.StyleList_notes)
|
self.StyleList_notes = self.uniq(self.StyleList_notes)
|
||||||
self.add_styled_notes_fonts()
|
self.add_styled_notes_fonts()
|
||||||
self.add_styled_notes_styles()
|
self.add_styled_notes_styles()
|
||||||
self.StyleList_photos = self.uniq(self.StyleList_photos)
|
|
||||||
self.add_styled_photo_styles()
|
self.add_styled_photo_styles()
|
||||||
self.cntntx.write(self.cntnt1.getvalue())
|
self.cntntx.write(self.cntnt1.getvalue())
|
||||||
self.cntntx.write(self.cntnt2.getvalue())
|
self.cntntx.write(self.cntnt2.getvalue())
|
||||||
|
Loading…
Reference in New Issue
Block a user