调整大小/裁剪图像编码为base64图像字符串

时间:2015-03-02 11:56:25

标签: python django image python-imaging-library pillow

就我而言,有两种方法可以让图像调整大小/裁剪。

  1. 上传普通图片文件
  2. 提供图像的base64字符串数据
  3. 在1. case中,调整大小和裁剪效果很好:

    f = Image.open(uploaded_image)
    new_width, new_height = 1200, 630
    wpercent = (new_width / float(f.size[0]))
    hsize = int((float(f.size[1]) * float(wpercent)))
    
    if f.mode != "RGB":
       f = f.convert('RGB')
    
    og_img = None
    if f.size[0] < new_width:
      #upscale
      og_img = f.resize((new_width, hsize), Image.BICUBIC)
    
    elif f.size[0] >= new_width:
      #downscale
      og_img = f.resize((new_width, hsize), Image.ANTIALIAS)
    
    og_img = og_img.crop((0, 0, 1200, 630))
    

    调整大小/裁剪图片: enter image description here

    在2. case中,代码与上面的代码相同,但稍有改动:

    base64_image = str(request.POST.get('base64_image')).split(',')[1]
    imgfile = open('/'.join([settings.MEDIA_ROOT, 'test.png' ]), 'w+b')
    imgfile.write(decodestring(base64_image))
    imgfile.seek(0)
    f = Image.open(imgfile)
    
    #.. as above
    

    但调整大小/裁剪的图片: enter image description here

    为什么它的质量和尺寸都不好? (黑底部分..)我做错了什么?我是以错误的方式读取base64字符串吗?

1 个答案:

答案 0 :(得分:0)

我找到了一个网站里面有很多有趣的东西。它有2个(有很多)工具可能对你有帮助。第1个工具将图像转换为base64,第2个工具缩小图像尺寸(最多70个) %save)。

http://www.w3docs.com/tools/minimage/

http://www.w3docs.com/tools/image-base64