Sida 1 av 2
Konvertera monokroma bilder till inline assembly
Postat: 6 maj 2010, 19:38:12
av Swech
Någon som har ett program som kan konvertera monokroma bilder till
asciitext för inline assembly. Jag skall alltså inte göra ascii grafik utan
jag vill länka in grafik i assemblerkoden.
exempel
.dw 0b11111111111111
.dw 0b10000011100001
.dw 0b10001111110001
.dw 0b10000111100001
.dw 0b10000000000001
.dw 0b11111111111111
Swech
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 00:08:05
av TomasL
Om du pratar snällt med Baron3D så, kanske.
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 00:16:59
av victor_passe
FastLCD kan typ göra det, man pekar ut en bmp och i vilket format man vill ha ut-datan och den genererar lite hex.
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 03:33:38
av baron3d
Mitt program kan inte göra det du vill.
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 03:51:18
av blueint
Omvandla bilden till BMP. Skriv ett litet perl skript som läser in den som binärsträng. Och matar ut i valfritt format.
Beror förstås lite på hur assembler programmet läser bilddatat.
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 03:57:20
av bearing
Jag har en gång skrivit ett program i C som kan läsa och skriva BMP. Om du vill kan jag leta rätt på det, och ändra efter dina önskemål, ifall jag orkar.
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 14:22:58
av Swech
FastLCD funkade... fanns en hel del att önska utöver vad som bjöds men det går att leva med..
Swech
Re: Konvertera monokroma bilder till inline assembly
Postat: 7 maj 2010, 16:37:15
av bearing
När jag googlade efter fastlcd hittade jag den här:
http://rs503.rapidshare.com/files/15808 ... astlcd.rar
Testade bmp2asm och den skapar detta av en testbild:
dt 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,0x03,0x01
dt 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 13:40:32
av bos
Swech skrev:Någon som har ett program som kan konvertera monokroma bilder till
asciitext för inline assembly.
Här har du ett snabbhack jag skrev i Python:
Kod: Markera allt
import Image
img = Image.open("hej.png")
d = img.tostring()
_x, _y = img.size
n = 0
for y in xrange(_y):
s = ".dw 0b"
for x in xrange(_x):
s = s + str(ord(d[n]))
n = n + 1
print s
Kod: Markera allt
>>> ## working on region in file /usr/tmp/python-19677Vmn...
.dw 0b0000000000000000
.dw 0b0100001000000010
.dw 0b0100001000000000
.dw 0b0100001001100110
.dw 0b0111111010010010
.dw 0b0100001011110010
.dw 0b0100001010000010
.dw 0b0100001001110010
.dw 0b0000000000000010
.dw 0b0000000000001100
.dw 0b0000000000000000
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 15:25:25
av bearing
Jag tror Swech menade att bilderna är helt svartvita (ingen gråskala) och att varje bit ska representera en pixel.
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 16:10:26
av blueint
Självklart är perl minst lika bra till uppgiften..
Om infilen är en 1-bit/pixel
.pbm (portable bitmap) fil som denna:
Kod: Markera allt
P4
# CREATOR: XV
480 270
Ûm¶Ûm¶Ûm^@^@¶Ûm¶Õ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^B
.
.
Kan man omvandla den med detta
Perl program:
ppm2inline.pl
Kod: Markera allt
$input_filename = $ARGV[0];
if( open(F,$input_filename) ){
<F>; <F>; $param=<F>;
read(F, $bin, 1<<24);
close F;
}
if( $param =~ /^(\d+)\s+(\d+)/s ){
$x_siz = $1;
$y_siz = $2;
}
$x_max = $x_siz;
$y_max = $y_siz;
for($y=0; $y<$y_max; $y++){
for($x=0; $x<$x_max; $x++){
$pos = $y*$x_siz + $x;
$str[$n] .= sprintf("%d", (ord(substr($bin, $pos/8, 1)) >> (7-($pos)%8))&1 );
if( length($str[$n]) >= 16 )
{ $n++; }
}
}
for($n=0; $n<=$#str; $n++){
printf(".dw 0b%s\n", $str[$n] );
}
Som ger detta resultat:
Kod: Markera allt
.dw 0b1101101101101101
.dw 0b1011011011011011
.dw 0b0110110110110110
.dw 0b1101101101101101
.
.
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 16:17:40
av bos
bearing skrev:Jag tror Swech menade att bilderna är helt svartvita (ingen gråskala) och att varje bit ska representera en pixel.
Ja?
(Ledtråd: Läs vad det står i 1orna)
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 16:36:00
av bearing
Intressant att image.tostring ger den utdatan. Det trodde jag inte att den skulle göra, utan att strängen skulle fyllas med bytes som antingen är 0xff eller 0x00.
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 16:44:02
av bos
Varför gissa när lösningen fanns framför näsan?

Och varför skulle tostring() returnera 0 och 0xff?
tostring() ger 0 och 1 därför att det är en monokrom bild med endast två palettindex, vilket sammanfaller rätt bra med det Swech ville ha.
Re: Konvertera monokroma bilder till inline assembly
Postat: 8 maj 2010, 16:54:44
av bearing
Det var min första tanke att funktionen skulle fungera så. Sen kollade jag i dokumentation som sa att tostring() kan arbeta med 8,24,32 bitars bilder, det stod inget om 1-bitars. Så jag trodde att om indata var en 1-bit monokrom bild skulle bilden konverteras till en 8-bitars gråskalebild, som bara innehåller bytesen 0xff och 0x00. Såg inte att ettorna bildar ordet "hej", utan tänkte att det där bara var någon slumpvis data ifrån första linjen i en gråskalebild.