更改base64字符串并将其另存为图像

时间:2018-06-17 07:23:24

标签: python image-processing base64

我在python中将图像转换为base64字符串,将其转换为列表,更改几个字符并将base64字符串转换回图像。

这样做的目的是创建故障艺术,图像编码中的微小变化可以产生某些效果。

这就是我的代码:

import base64
import random
import string

times = 0
with open(r"C:\Users\Justin\Desktop\image.jpg", "rb") as image:
    text = base64.b64encode(image.read())
text = str(text)
text = list(text)
char_no = len(text)
while True:
    crpt_amn = input("how much do you want to corrupt the image? insert a value from 0 to " + str(char_no) + " ")
    try:
      if int(crpt_amn) < 0:
          print("value is out of range!")
      elif int(crpt_amn) > char_no:
          print("value is out of range!")
      else:
          break          
    except ValueError:
          print("that isn't a number")
while times < (int(crpt_amn) + 1):
    picked = random.randint(0, char_no)
    if text[picked] == '/':
        times += 1
    else:
        text[picked] = random.choice(string.ascii_letters)
        times += 1    
text = ''.join(text)
text = str.encode(text)
text = base64.b64decode(text)
filename = "out_img.jpg"
with open(filename, "wb") as picture:
    picture.write(text)

但是,将text转换为str(text)str.encode(text)并返回base64.b64decode(text)似乎存在问题,因为输出图像无法打开。

对base64字符串所做的更改是微不足道的,即使您将crypt_amn设置为0,这样也不会对其进行任何更改,输出图像仍然无法打开。

我试图摆脱整个腐败部分并将代码剥离到这一点:

import base64
import random
import string

with open(r"C:\Users\Justin\Desktop\image.jpg", "rb") as image:
    text = base64.b64encode(image.read())
text = str(text)
text = str.encode(text)
text = base64.b64decode(text)
filename = "out_img.jpg"
with open(filename, "wb") as picture:
    picture.write(text)

但输出图像仍然无法打开。

有没有办法实现所需的功能,用户可以将base64字符串编辑为列表?

谢谢!

(对不起,如果我的某些术语有问题,或者我的问题看起来很荒谬,我仍然是python的初学者)

0 个答案:

没有答案