You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ARGB十六进制字符串转换为图片?Python实现遇问题

ARGB十六进制字符串转图片问题解决

问题描述

我有一段ARGB十六进制字符串:

"FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFF".

尝试用以下Python代码转换为图片,但生成的是无效图片:

text = "FFFFFFFFFFA30000......" #hex code
integers = []

while text:
    value = int(text[:2], 16)
    integers.append(value)
    text = text[2:]

data = bytearray(integers)    

with open('output.jpg', 'wb') as fh:
    print(fh.write(data))

问题分析与解决

你的代码存在两个核心问题:

  1. 直接写入原始字节无法生成标准图片格式:JPG是带有特定文件头和编码规则的压缩格式,不能直接将像素字节写入文件当作JPG,必须用图像库将像素数据封装为标准格式。
  2. ARGB数据解析逻辑错误:ARGB每个像素占4字节(A、R、G、B各1字节),你的代码按单字节拆分,没有按像素维度分组解析通道值。

正确实现步骤

使用Python的Pillow库处理,步骤如下:

  1. 移除十六进制字符串两端的引号,保留纯十六进制字符。
  2. 按每8个十六进制字符(对应4字节ARGB)为一组,拆分出每个像素的A、R、G、B通道值。
  3. 确定图片尺寸:总像素数为十六进制字符串长度÷8,这里总长度为2048,对应256像素,因此设置为16×16的尺寸。
  4. 创建Pillow的Image对象,将像素数据写入后保存为支持透明通道的PNG格式。

完整代码

from PIL import Image

# 原始ARGB十六进制字符串,去除两端引号
hex_str = "FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFFFFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFA30000FFFFFFFF"

# 计算总像素数:每个像素对应8个十六进制字符
pixel_count = len(hex_str) // 8
# 设置图片尺寸为16×16(256像素)
width, height = 16, 16

# 解析每个像素的RGBA值(PIL使用RGBA顺序,需转换ARGB顺序)
pixels = []
for i in range(0, len(hex_str), 8):
    argb_segment = hex_str[i:i+8]
    a = int(argb_segment[0:2], 16)
    r = int(argb_segment[2:4], 16)
    g = int(argb_segment[4:6], 16)
    b = int(argb_segment[6:8], 16)
    pixels.append((r, g, b, a))

# 创建RGBA模式的图片并写入像素数据
img = Image.new('RGBA', (width, height))
img.putdata(pixels)

# 保存为PNG格式(支持透明通道)
img.save('output.png')
print("图片已成功保存为output.png")

注意事项

  • 若图片实际尺寸不是16×16,需根据总像素数调整宽高(比如32×8等,只要宽×高=总像素数即可)。
  • 若不需要透明通道,可将图片模式改为RGB,并去掉A通道值。
  • 需先安装Pillow库:执行pip install pillow完成安装。

内容的提问来源于stack exchange,提问作者cryingCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:15:36