简体   繁体   English

如何将base64转换为TIFF图像或PNG图像?

[英]How to convert base64 to a TIFF image or a PNG image?

I have a base64 encoded string of a TIFF image type and I want to convert it into a PNG image using python. 我有一个base64编码的TIFF图像类型的字符串,我想使用python将其转换为PNG图像。 I saw a package pillow which can manipulate a tiff file but how to proceed with a given "base64 of TIFF"? 我看到了一个可以操作tiff文件的包枕,但是如何继续使用给定的“base64 of TIFF”?

base64 to tiff : base64tiff

import base64

text_base64 = 'SUkqAAgAAAASAP4ABAABAAAAAAAAAAABAwABAAAACgAAAAEBAwABAAAACgAAAAIBAwADAAAA5gAAAAMBAwABAAAAsoAAAAYBAwABAAAAAgAAABEBBAABAAAAgAMAABIBCQABAAAAAQAAABUBAwABAAAAAwAAABYBAwABAAAAKAAAABcBBAABAAAAPwAAABoBBQABAAAA7AAAABsBBQABAAAA9AAAABwBAwABAAAAAQAAACgBAwABAAAAAgAAADIBAgAUAAAA/AAAAD0BAwABAAAAAgAAAGmHBAABAAAAEAEAAF4BAAAIAAgACABIAAAAAQAAAEgAAAABAAAAMjAxOTowNzoyMyAyMTozNDoxOQAGAACQBwAEAAAAMDIyMQGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgCQABAAAAAQAAAAKgCQABAAAACgAAAAOgCQABAAAACgAAAAAAAAAGAAMBAwABAAAABgAAABoBCQABAAAASAAAABsBCQABAAAASAAAACgBCQABAAAAAgAAAAECBAABAAAArAEAAAICBAABAAAA1AEAAAAAAAD/2P/gABBKRklGAAEBAAABAAEAAP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/AABEIAAoACgMBIgACEQEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAABwgJ/8QAIBAAAgICAgMBAQAAAAAAAAAAAgMBBAUGBxEACCETEv/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwBi60fFuU1XB5beI0a3tWVxGMv2RzeECzk77nALXymDn9LIsE4UkEjIrMJWMH/H4hOfJXsNzHq3Iuy6xhd0cnF4jL2qFJbqVawwEpcS1wTWrJjCgRjszIiKfszMzM+Htlu+6at7CbVhdY2/YMHi1NQ5dLHZJ1ZAG2sprThYFAwRsMzKeuyIyKe5mZ80MoVKtCjXo0ayatSsoUoQlcAtQDHQgIx8EYiIiIj5ER4H/9l4nPv//z8DAwMjIyMDKvgPFgeSQCkIGxnABTGl4ArgsnDFyAwi9eKRRXMYhItmL5p34Gpw+QhTI7J2AOTAPvUA'

bytes_base64 = text_base64.encode()
data = base64.b64decode(bytes_base64)
open('image.tiff', 'wb').write(data)

tiff to base64 and html : tiffbase64html

import base64

data = open('image.tiff', 'rb').read()
bytes_base64 = base64.b64encode(data)
text_base64 = bytes_base64.decode()

print(text_base64)

html = '<img src="data:image/tiff;base64,' + text_base64 + '">'
open('output-tiff.html', 'w').write(html)

Probably most browsers can't display tiff so file .html may display broken image. 可能大多数浏览器都无法显示tiff,因此文件.html可能会显示损坏的图像。 You would have to save it from page to file and then you can see tiff. 您必须将其从一个页面保存到另一个文件,然后您可以看到tiff。


This is image used in examples but here in png format: 这是示例中使用的图像,但这里是png格式:

face.tiff


EDIT: example with the same image but in png format. 编辑:具有相同图像但以png格式表示的示例。 This html will display image in every browser. 这个html将在每个浏览器中显示图像。

# base64 to png

import base64

text_base64 = 'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAAAAACoWZBhAAAAMklEQVR4nEXNwQkAMBACwfFI/y2bxwXia8FFUwF1pCCNJTIIwaD04ctsKRyaldI/9i8u1iwOE6FA880AAAAASUVORK5CYII='

bytes_base64 = text_base64.encode()
data = base64.b64decode(bytes_base64)
open('image.png', 'wb').write(data)

# png to base64 and html

import base64

data = open('image.png', 'rb').read()
bytes_base64 = base64.b64encode(data)
text_base64 = bytes_base64.decode()

print(text_base64)

html = '<img src="data:image/png;base64,' + text_base64 + '">'
open('output-png.html', 'w').write(html)

Here is how to do it for PNG in Python Wand, which is based upon Imagemagick. 以下是如何在Python Wand中使用PNG,它基于Imagemagick。

#!/bin/python3.7

from wand.image import Image

with Image(filename='inline:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAFVBMVEUAAAAAAAD13rO+vr7///8ekP/////XKQFBAAAAAXRSTlMAQObYZgAAAAFiS0dEBmFmuH0AAAAHdElNRQfjBxgCMxZ4smTjAAAAhElEQVQoz6WR0Q2AIAxEZQNaXaDdgLgCDuD+y1gQ4hViYmL/eLn2jnZZvhVRdO+gKg6wqsYRyADEjTGw7ikhMAGRA/k4ZQRgZDO2zGBUXTBLyaGYhaWhLuEu6SDo0DMB/gHiGwh3cvgMUSGCOxP1pzDgLzOD0gFLNRubyQSC6vq0USsDFzgRGqPIUzNPAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA3LTI0VDAyOjQ4OjI3KzAwOjAw2vH1ygAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNy0yNFQwMjo0ODoyNyswMDowMKusTXYAAAAASUVORK5CYII=') as img:
    img.save(filename='noseguy_b64.png')


在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM