@@ -17,6 +17,7 @@ from utils.error.errno_utils import ContractStatusCode  | 
            ||
| 17 | 17 | 
                from utils.redis.rimage import get_images_data  | 
            
| 18 | 18 | 
                from utils.tencentcloud.ess import (callback_decode, create_document, create_flow, create_scheme_url, start_flow,  | 
            
| 19 | 19 | 
                test_upload_document_files, upload_document_files)  | 
            
| 20 | 
                +from utils.thumbnail_utils import make_thumbnail2  | 
            |
| 20 | 21 | 
                 | 
            
| 21 | 22 | 
                 | 
            
| 22 | 23 | 
                @logit(res=True)  | 
            
                @@ -99,6 +100,7 @@ def get_contribtion_contract_sign_mppath_api(request):  | 
            ||
| 99 | 100 | 
                def generate_file_from_qiniu(file_url):  | 
            
| 100 | 101 | 
                try:  | 
            
| 101 | 102 | 
                data = requests.get(file_url).content  | 
            
| 103 | 
                + data = make_thumbnail2(data)  | 
            |
| 102 | 104 | 
                         data = base64.b64encode(data).decode('utf-8')
               | 
            
| 103 | 105 | 
                except Exception:  | 
            
| 104 | 106 | 
                data = None  | 
            
                @@ -165,7 +167,7 @@ def create_contribution_contract_document(lensman, contribution_id, file_ids, Fl  | 
            ||
| 165 | 167 | 
                # 创建电子签文档 https://qian.tencent.com/developers/companyApis/startFlows/CreateDocument  | 
            
| 166 | 168 | 
                IMAGE_COMPONENTIDS = ['ComponentId_37', 'ComponentId_38','ComponentId_39','ComponentId_40','ComponentId_41','ComponentId_42',  | 
            
| 167 | 169 | 
                'ComponentId_43','ComponentId_44','ComponentId_45','ComponentId_46','ComponentId_47','ComponentId_48','ComponentId_49','ComponentId_50','ComponentId_51','ComponentId_52','ComponentId_53','ComponentId_54','ComponentId_55', 'ComponentId_55', 'ComponentId_56', 'ComponentId_57', 'ComponentId_58', 'ComponentId_59', 'ComponentId_60', 'ComponentId_9', 'ComponentId_10', 'ComponentId_11', 'ComponentId_12', 'ComponentId_13', 'ComponentId_14', 'ComponentId_15', 'ComponentId_16', 'ComponentId_17', 'ComponentId_18', 'ComponentId_19', 'ComponentId_20', 'ComponentId_21', 'ComponentId_22', 'ComponentId_23', 'ComponentId_24', 'ComponentId_25', 'ComponentId_26', 'ComponentId_27', 'ComponentId_28','ComponentId_29', 'ComponentId_30', 'ComponentId_31', 'ComponentId_32']  | 
            
| 168 | 
                -  | 
            |
| 170 | 
                +  | 
            |
| 169 | 171 | 
                try:  | 
            
| 170 | 172 | 
                amount = LensmanContributionActivityIncomeExpensesInfo.objects.get(contribution_id=contribution_id, lensman_id=lensman.lensman_id).amount  | 
            
| 171 | 173 | 
                except LensmanContributionActivityIncomeExpensesInfo.DoesNotExist:  | 
            
                @@ -4,6 +4,15 @@ from __future__ import division  | 
            ||
| 4 | 4 | 
                 | 
            
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                try:  | 
            
| 7 | 
                + from cStringIO import StringIO  | 
            |
| 8 | 
                + from cStringIO import StringIO as BytesIO  | 
            |
| 9 | 
                +except ImportError:  | 
            |
| 10 | 
                + try:  | 
            |
| 11 | 
                + from StringIO import StringIO  | 
            |
| 12 | 
                + from StringIO import StringIO as BytesIO  | 
            |
| 13 | 
                + except ImportError:  | 
            |
| 14 | 
                + from io import BytesIO, StringIO  | 
            |
| 15 | 
                +try:  | 
            |
| 7 | 16 | 
                from PIL import Image  | 
            
| 8 | 17 | 
                except ImportError:  | 
            
| 9 | 18 | 
                import Image  | 
            
                @@ -17,3 +26,18 @@ def make_thumbnail(im_path, im_thumbnail_path=None, max_width=360):  | 
            ||
| 17 | 26 | 
                im.thumbnail((thumb_width, thumb_height), Image.ANTIALIAS)  | 
            
| 18 | 27 | 
                im.save(im_thumbnail_path or im_path, im.format or 'JPEG', quality=90)  | 
            
| 19 | 28 | 
                return width, height, thumb_width, thumb_height  | 
            
| 29 | 
                +  | 
            |
| 30 | 
                +  | 
            |
| 31 | 
                +def make_thumbnail2(data, w=360, h=240):  | 
            |
| 32 | 
                + im = Image.open(BytesIO(data))  | 
            |
| 33 | 
                + fmt = im.format.lower()  | 
            |
| 34 | 
                + width, height = im.size  | 
            |
| 35 | 
                + if width > height:  | 
            |
| 36 | 
                + thumb_width, thumb_height = w, height * w / width  | 
            |
| 37 | 
                + else:  | 
            |
| 38 | 
                + thumb_width, thumb_height = width * h / height, h  | 
            |
| 39 | 
                + im.thumbnail((thumb_width, thumb_height), Image.ANTIALIAS)  | 
            |
| 40 | 
                + out = BytesIO()  | 
            |
| 41 | 
                + im.save(out, format=fmt)  | 
            |
| 42 | 
                + data = out.getvalue()  | 
            |
| 43 | 
                + return data  |