目录
前言
在使用FPGA连接VGA显示器显示图片的时候,需要将图片转换成mif格式,从而将图片存储在ROM中,因而我使用了一个python程序来实现将图片转换成mif格式
1.图片转换为bmp格式
首先准备好一张图片
右键选择画图打开
打开后点击左上角文件
点击另存为
另存为24位bmp格式的图像
2.使用python程序将bmp图片转换成mif文件
将装换后的bmp文件和python程序放在同一个文件夹
将代码最后一行的bmp文件名改成自己需要装换的bmp的文件名,然后运行代码即可在当前文件夹下得到mif文件
from PIL import Image
def bmp_to_rgb888_mif(image_path, mif_path):
# 打开BMP图片
image = Image.open(image_path)
# 将图片转换为RGB888格式
image_rgb888 = image.convert("RGB")
# 获取图片尺寸
width, height = image.size
with open(mif_path, "w", encoding="utf-8") as mif_file:
# 写入MIF文件头部
mif_file.write("DEPTH = {};\n".format(width * height))
mif_file.write("WIDTH = 24;\n")
mif_file.write("ADDRESS_RADIX = HEX;\n")
mif_file.write("DATA_RADIX = HEX;\n")
mif_file.write("CONTENT\n")
mif_file.write("BEGIN\n")
# 遍历图片中的每个像素
for y in range(height):
for x in range(width):
# 获取像素的RGB值
r, g, b = image_rgb888.getpixel((x, y))
# 将RGB888转换为24位十六进制值
rgb_hex = "{:02X}{:02X}{:02X}".format(b, g, r)
# 将像素值写入MIF文件
mif_file.write("{:04X} : {};\n".format(y * width + x, rgb_hex))
# 写入MIF文件尾部
mif_file.write("END;\n")
print("转换完成。MIF文件已保存为'{}'".format(mif_path))
# 示例用法
bmp_to_rgb888_mif("1.bmp", "output.mif")
# 使用时将1.bmp改为需要转换的文件名.bmp