use pixbuf.new_from_bytes() instead of broken pixbuf.new_from_data()
This commit is contained in:
		
							parent
							
								
									997e686d57
								
							
						
					
					
						commit
						4f8984ad7e
					
				
					 1 changed files with 6 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -436,17 +436,12 @@ def get_pixbuf_from_data(file_data, want_type = False):
 | 
			
		|||
        pixbufloader.close()
 | 
			
		||||
 | 
			
		||||
        # try to open and convert this image to png using pillow (if available)
 | 
			
		||||
        log.debug("loading avatar using pixbufloader directly failed, trying to convert avatar image using pillow (if available)")
 | 
			
		||||
        pixbufloader = GdkPixbuf.PixbufLoader()
 | 
			
		||||
        log.debug("loading avatar using pixbufloader failed, trying to convert avatar image using pillow (if available)")
 | 
			
		||||
        try:
 | 
			
		||||
            avatar = Image.open(BytesIO(file_data))
 | 
			
		||||
            output = BytesIO()
 | 
			
		||||
            avatar.save(output, format='PNG')
 | 
			
		||||
            file_data = output.getvalue()
 | 
			
		||||
            output.close()
 | 
			
		||||
            pixbufloader.write(file_data)
 | 
			
		||||
            pixbufloader.close()
 | 
			
		||||
            pixbuf = pixbufloader.get_pixbuf()
 | 
			
		||||
            avatar = Image.open(BytesIO(file_data)).convert("RGBA")
 | 
			
		||||
            arr = GLib.Bytes.new(avatar.tobytes())
 | 
			
		||||
            width, height = avatar.size
 | 
			
		||||
            pixbuf = GdkPixbuf.Pixbuf.new_from_bytes(arr, GdkPixbuf.Colorspace.RGB, True, 8, width, height, width * 4)
 | 
			
		||||
        except:
 | 
			
		||||
            log.info("Could not use pillow to convert avatar image, image cannot be displayed")
 | 
			
		||||
            if want_type:
 | 
			
		||||
| 
						 | 
				
			
			@ -455,7 +450,7 @@ def get_pixbuf_from_data(file_data, want_type = False):
 | 
			
		|||
                return None
 | 
			
		||||
 | 
			
		||||
    if want_type:
 | 
			
		||||
        typ = pixbufloader.get_format().get_name()
 | 
			
		||||
        typ = pixbufloader.get_format() and pixbufloader.get_format().get_name() or None
 | 
			
		||||
        return pixbuf, typ
 | 
			
		||||
    else:
 | 
			
		||||
        return pixbuf
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue