【问题标题】:Resize/crop image encoded as base64 image string调整大小/裁剪图像编码为 base64 图像字符串
【发布时间】:2015-03-03 23:40:14
【问题描述】:

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

  1. 上传普通图片文件
  2. 给出图片的base64字符串数据

在 1. 情况下,调整大小和裁剪效果很好:

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))

调整大小/裁剪图像:

在2.情况下,代码同上,略有改动:

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

但调整大小/裁剪的图像:

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

【问题讨论】:

  • 您是否检查了情况 2 中写入磁盘的实际文件(操作之前)?这将告诉传输或解码是否失败,将问题减少一半。

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


【解决方案1】:

我发现了一个网站,里面有很多有趣的东西。它有 2 个(有很多)工具可以帮助你。第一个工具将图像转换为 base64,第二个工具缩小图像的大小(最多 70 % 保存)。

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

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

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多