tcl gif转mif,gif2mif

.gif图片转成.mif文件,quartus 内存初始化文件,适用的altera 各系列fpga。

# use tk compile to run this tk script
# this tk script converts .png or .gif to .mif or .coe 


set fileName "test.gif"
# outMifCoe = 1,output .mif; outMifCoe = others,output .coe;
set outMifCoe 0


#log2() function
namespace eval math {
proc log2 {x} {
set i 0
while {$x > 1} {
set x [expr $x/2]
incr i
}
return $i
}
}


# get .png rgb info
set img [image create photo -file $fileName]
set imgWidth  [image width $img]
set imgHeight [image height $img]
set pixel [expr $imgHeight * $imgWidth]
set exp [math::log2 $imgWidth*$imgHeight]
set depth [expr 2**[expr $exp+1]]


proc pic2mif {} {
global depth img imgWidth imgHeight pixel
set content "DEPTH = $depth;\nWIDTH = 24;\nADDRESS_RAIDX = HEX;\nDATA_RADIX = HEX;\n"
append content "CONTENT\nBEGIN\n"
for {set x 0} {$x < $imgWidth} {incr x} {
for {set y 0} {$y < $imgHeight} {incr y} {
set color [$img get $x $y]
#change data to hex
set rgb [format {%02x%02x%02x} {*}$color]
set i [expr $x*$imgHeight + $y]
set hex_i [format "%X" $i]
#print address and data
append content "$hex_i : $rgb;\n"
}
}
# fill zero
if {$depth > $pixel} {
for {set i $pixel} {$i < $depth} {incr i} {
set hex_i [format "%X" $i]
#print address and data
append content "$hex_i : 0;\n"
}
}
append content "END ;\n"
#create mif and write content into it 
set fd [open [pwd]/pic.mif w+]
puts $fd $content
close $fd
}


proc pic2coe {} {
global depth img imgWidth imgHeight pixel
set content "MEMORY_INITIALIZATION_RADIX=16;\n"
append content "MEMORY_INITIALIZATION_VECTOR="
for {set x 0} {$x < $imgWidth} {incr x} {
for {set y 0} {$y < $imgHeight} {incr y} {
set color [$img get $x $y]
#change data to hex
set rgb [format {%02x%02x%02x} {*}$color]
set i [expr $x*$imgHeight + $y]
#print address and data
if {$i == [expr $depth - 1]} {
append content "$rgb"
} else {
append content "$rgb,"
}
}
}
# fill zero
if {$depth > $pixel} {
for {set i $pixel} {$i < $depth} {incr i} {
if {$i == [expr $depth - 1]} {
append content "0"
} else {
append content "0,"
}
}
}
append content ";\n"
set fd [open [pwd]/pic.coe w+]
puts $fd $content
close $fd 
}


if {$outMifCoe==1} {
pic2mif
} else {
pic2coe
}

.gif图片转成.mif文件,quartus 内存初始化文件,适用的altera 各系列fpga。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江鸟的坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值