• 大小: 4KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: Python
  • 标签: fpga  

资源简介

使用python脚本,在命令行python ex.py 图片名 位深度 mem 即可将图片转化为.mem文件,用于fpga的内存初始化

资源截图

代码片段和文件信息

# img2fmem.py - image to FPGA memory map converter
# By Will Green - https://timetoexplore.net
# Copyright (c) 2018 Will Green Licensed under BSD 3-Clause License
# For latest version and docs visit https://github.com/WillGreen/fpgatools

import os
import sys
from PIL import Image

if len(sys.argv) != 4:
    print(“usage: python img2fmem.py image_file colour_bits output_format“)
    print(“       image_file: source image file name“)
    print(“       colour_bits: number of colour bits per pixel: 4 6 or 8“)
    print(“       output_format: mem or coe“)
    sys.exit()

MESSAGE = “Generated by img2fmem.py - https://github.com/WillGreen/fpgatools\n“

input_file = sys.argv[1]
base_name = os.path.splitext(input_file)[0]

colour_bits = int(sys.argv[2])
if colour_bits == 4:
    pal_size = 16
elif colour_bits == 6:
    pal_size = 64
else:
    pal_size = 256  # default to 8-bit
    colour_bits = 8  # explictly assign a value so we can use in COE format

output_format = sys.argv[3]

# load source image
source_img = Image.open(input_file)
prev_img = source_img.copy()  # take a copy for later preview process
(width height) = source_img.size

# Reduce to 12-bit precision (4-bit per colour) in range 0-15
pixels = source_img.load()
for x in range(width):
    for y in range(height):
        pixels[x y] = tuple([p // 16 for p in pixels[x y]])

# Convert to limited colour palette
dest_img = source_img.convert(‘P‘ palette=Image.ADAPTIVE colors=pal_size)
dest_pal = dest_img.palette.palette

# Generate hex image output
image_data = dest_img.getdata()
image_output = ‘‘
if output_format == ‘mem‘:
    image_output += “// “ + MESSAGE
    for d in image_data:
        image_output += hex(d)[2:] + “\n“
elif output_format == ‘coe‘:
    image_output += “; “ + MESSAGE
    image_output += “memory_initialization_radix={:d};“.format(c

评论

共有 条评论

相关资源