mirror of
				https://github.com/pklaus/brother_ql_web.git
				synced 2024-05-25 11:56:53 +03:00 
			
		
		
		
	Improved code calculating the font size / centering the text
This commit is contained in:
		
							parent
							
								
									cb3cc07389
								
							
						
					
					
						commit
						3c26567223
					
				| @ -65,7 +65,10 @@ def get_label_context(request): | ||||
|       'label_size':    request.query.get('label_size', "62"), | ||||
|       'margin':    int(request.query.get('margin', 10)), | ||||
|       'threshold': int(request.query.get('threshold', 70)), | ||||
|       'align':         request.query.get('align', 'center'), | ||||
|     } | ||||
|     context['margin_top']    = int(context['font_size']*0.24) | ||||
|     context['margin_bottom'] = int(context['font_size']*0.45) | ||||
| 
 | ||||
|     def get_font_path(font_family, font_style): | ||||
|         try: | ||||
| @ -99,24 +102,24 @@ def get_label_context(request): | ||||
| 
 | ||||
| def create_label_im(text, **kwargs): | ||||
|     im_font = ImageFont.truetype(kwargs['font_path'], kwargs['font_size']) | ||||
|     textsize = im_font.getsize(text) | ||||
|     if 'x' in kwargs['label_size']: | ||||
|         # die-cut labels | ||||
|     im = Image.new('L', (20, 20), 'white') | ||||
|     draw = ImageDraw.Draw(im) | ||||
|     linesize = im_font.getsize(text) | ||||
|     textsize = draw.multiline_textsize(text, font=im_font) | ||||
|     if 'x' in kwargs['label_size']: # die-cut labels | ||||
|         height = kwargs['height'] | ||||
|     else: | ||||
|         height = max(textsize[1] * (text.count('\n')+1), kwargs['height']) | ||||
|         height = textsize[1] + kwargs['margin_top'] + kwargs['margin_bottom'] | ||||
|     im = Image.new('L', (kwargs['width'], height), 'white') | ||||
|     draw = ImageDraw.Draw(im) | ||||
|     textsize = draw.multiline_textsize(text, font=im_font) | ||||
|     if 'x' in kwargs['label_size']: | ||||
|         # die-cut labels | ||||
|         vertical_offset = (height - textsize[1])//2 | ||||
|     if 'x' in kwargs['label_size']: # die-cut labels | ||||
|         vertical_offset  = (height - textsize[1])//2 | ||||
|         vertical_offset += (kwargs['margin_top'] - kwargs['margin_bottom'])//2 | ||||
|     else: | ||||
|         vertical_offset = 0 | ||||
|         vertical_offset = kwargs['margin_top'] | ||||
|     horizontal_offset = max((kwargs['width'] - textsize[0])//2, 0) | ||||
|     if 'ttf' in kwargs['font_path']: vertical_offset -= 10 | ||||
|     offset = horizontal_offset, vertical_offset | ||||
|     draw.multiline_text(offset, text, (0), font=im_font, align="center") | ||||
|     draw.multiline_text(offset, text, (0), font=im_font, align=kwargs['align']) | ||||
|     return im | ||||
| 
 | ||||
| @route('/api/preview/text/<text>') | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user