diff --git a/openerp/addons/base/base_menu.xml b/openerp/addons/base/base_menu.xml
index 770e0e2d329..2e6a6d3a27f 100644
--- a/openerp/addons/base/base_menu.xml
+++ b/openerp/addons/base/base_menu.xml
@@ -29,5 +29,17 @@
+
+
+
diff --git a/openerp/report/render/rml2pdf/customfonts.py b/openerp/report/render/rml2pdf/customfonts.py
index 6120b7dd412..ff46018a5e5 100644
--- a/openerp/report/render/rml2pdf/customfonts.py
+++ b/openerp/report/render/rml2pdf/customfonts.py
@@ -65,6 +65,7 @@ TTFSearchPath_Linux = [
'/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL
'/usr/share/fonts/truetype/*', # Ubuntu,
'/usr/share/fonts/TTF/*', # at Mandriva/Mageia
+ '/usr/share/fonts/TTF', # Arch Linux
]
TTFSearchPath_Windows = [
diff --git a/openerp/tools/image.py b/openerp/tools/image.py
index 38997978326..e2b14f18d0d 100644
--- a/openerp/tools/image.py
+++ b/openerp/tools/image.py
@@ -20,6 +20,7 @@
##############################################################################
import io
+import sys
import StringIO
from PIL import Image
@@ -66,15 +67,18 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
# check image size: do not create a thumbnail if avoiding smaller images
if avoid_if_small and image.size[0] <= size[0] and image.size[1] <= size[1]:
return base64_source
- # create a thumbnail: will resize and keep ratios, then sharpen for better looking result
- image.thumbnail(size, Image.ANTIALIAS)
- image.convert('RGB')
- image = image.filter(ImageFilter.SHARPEN)
- # create a transparent image for background
- background = Image.new('RGBA', size, (255, 255, 255, 0))
- # past the resized image on the background
- background.paste(image, ((size[0] - image.size[0]) / 2, (size[1] - image.size[1]) / 2))
- # return an encoded image
+
+ if (float(image.size[0])/image.size[1]) > (float(size[0]) / size[1]):
+ ibox = (size[1] * image.size[0] / image.size[1] , size[1])
+ deltax = max((size[1] * image.size[0] / image.size[1] - size[0]) / 2, 0)
+ deltay = 0
+ else:
+ ibox = (size[0],size[0] * image.size[1] / image.size[0])
+ deltax = 0
+ deltay = max((size[0] * image.size[1] / image.size[0] - size[1]) / 2, 0)
+
+ im2 = image.resize(ibox, Image.ANTIALIAS)
+ background = im2.crop((deltax, deltay, deltax+size[0], deltay+size[1]))
background_stream = StringIO.StringIO()
background.save(background_stream, filetype)
return background_stream.getvalue().encode(encoding)
@@ -157,3 +161,4 @@ def image_get_resized_images(base64_source, return_big=False, return_medium=True
if return_small:
return_dict[small_name] = image_resize_image_small(base64_source, avoid_if_small=avoid_resize_small)
return return_dict
+