【问题标题】:How can i import an image file into python , read it as an array, then output the array as same image file type如何将图像文件导入 python ,将其作为数组读取,然后将数组输出为相同的图像文件类型
【发布时间】:2021-07-22 21:31:02
【问题描述】:

我的任务是编写一个程序,该程序可以将图像文件作为输入,然后用我已经编写的一些辅助代码对图像进行加密,最后输出加密的图像文件。

我想导入一个图像,使其成为一维数字数组,对该一维数组执行一些加密(这将使其成为一个二维数组,我将对其进行展平),然后能够输出加密的一维数组将数组转换回输入时的任何格式后作为图像文件。

我想知道如何做到这一点,以及可以接受哪些类型的图像文件以及可能需要哪些库的详细信息。 谢谢

编辑: 这是我使用的一些代码,img_arr 将图像存储在一个整数数组中,最大 255。这就是我想要的,但是现在我需要在 img_arr 上执行一些功能后转换回原始格式。

from PIL import Image
    img = Image.open('testimage.jfif')
    print('img first: ',img)
    img = img.tobytes()
    img_arr=[]
    for x in img:
          img_arr.append(x)
    img2=Image.frombytes('RGB',(460,134),img)
    print('img second: ',img2)

我的输出略有不同

img first: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=460x134 at 0x133C2D6F970>
img second: <PIL.Image.Image image mode=RGB size=460x134 at 0x133C2D49EE0>

【问题讨论】:

  • 使用 base64。此链接回答您的问题。 stackoverflow.com/questions/3715493/…
  • @bobdaves69 到目前为止你尝试过什么?
  • @Bilal 首先,我尝试过使用 Pillow。我将使用我尝试过的一些代码来编辑问题。
  • @bobdaves69 你可以看到这个有用的tutorial using OpenCV
  • @Bilal 谢谢。我只需要将整个图像读取为数字数组,然后将结果输出回图像,但结果比预期的要困难得多。我会看看链接,明天回来。

标签: python arrays python-3.x image image-processing


【解决方案1】:

在编程中,Base64 是一组二进制到文本的编码方案,通过将数据转换为 radix-64 表示形式,以 ASCII 字符串格式表示二进制数据(更具体地说,是 8 位字节序列)。

幸运的是,您可以使用基于base64的python对图像二进制文件进行编码和解码。以下链接对您有帮助。

Encoding an image file with base64

【讨论】:

  • 这是将图像表示为位数组的唯一方法吗?添加 base64 编码会使程序不必要地更加复杂和耗时,因为我每次都必须解码
猜你喜欢
  • 2012-07-20
  • 2023-02-16
  • 2011-08-17
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多