Konvertera monokroma bilder till inline assembly
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Konvertera monokroma bilder till inline assembly
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
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
Om du pratar snällt med Baron3D så, kanske.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Konvertera monokroma bilder till inline assembly
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
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.
Beror förstås lite på hur assembler programmet läser bilddatat.
Re: Konvertera monokroma bilder till inline assembly
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.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Konvertera monokroma bilder till inline assembly
FastLCD funkade... fanns en hel del att önska utöver vad som bjöds men det går att leva med..
Swech
Swech
Re: Konvertera monokroma bilder till inline assembly
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
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
Här har du ett snabbhack jag skrev i Python:Swech skrev:Någon som har ett program som kan konvertera monokroma bilder till
asciitext för inline assembly.
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
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
Självklart är perl minst lika bra till uppgiften.. 
Om infilen är en 1-bit/pixel .pbm (portable bitmap) fil som denna:
Kan man omvandla den med detta Perl program:
ppm2inline.pl
Som ger detta resultat:

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
.
.
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] );
}
Kod: Markera allt
.dw 0b1101101101101101
.dw 0b1011011011011011
.dw 0b0110110110110110
.dw 0b1101101101101101
.
.
Re: Konvertera monokroma bilder till inline assembly
Ja?bearing skrev:Jag tror Swech menade att bilderna är helt svartvita (ingen gråskala) och att varje bit ska representera en pixel.
(Ledtråd: Läs vad det står i 1orna)
Re: Konvertera monokroma bilder till inline assembly
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
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.

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
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.