Sida 2 av 2

Postat: 8 maj 2005, 18:20:31
av henkebenke
Här är ett matlab-script som gör om en bmp till två bilder, en för vänstra och en för högra halvan av displayen.

Kod: Markera allt

function bildkonvert(filenamein, filenameleft, filenameright);
%Skapa bild i specialformat för LCD-display. 
% Use: bildkonvert('infilename','leftfilename','rightfilename')

picture = double(imread(filenamein));

figure(1)
colormap gray;
imagesc(picture)

picture(find(picture==0)) = 2;
picture(find(picture==1)) = 0;
picture(find(picture==2)) = 1;

fout = fopen(filenameleft, 'w');

for rad=0:7
    for byte=1:64
        B = 0;%uchar(0);
        for bit=1:8
            B = bitset(B, bit, picture(((rad*8) + bit), byte));
        end
        fwrite(fout,B,'uchar');
    end
end

fclose(fout);
fout = fopen(filenameright, 'w');

for rad=0:7
    for byte=65:128
        B = 0;%uchar(0);
        for bit=1:8
            B = bitset(B, bit, picture(((rad*8) + bit), byte));
        end
        fwrite(fout,B,'uchar');
    end
end

fclose(fout);

%läs in och återskapa bild för att visa hur det ser ut
fin = fopen(filenameleft, 'r');
left = zeros(64,64);
for rad=0:7
    for byte=1:64
        B = double(fread(fin,1));
        for bit=1:8
            left(((rad*8) + bit), byte) = bitget(B, bit);
        end
    end
end

fclose(fin);
fin = fopen(filenameright, 'r');
right = zeros(64,64);
for rad=0:7
    for byte=1:64
        B = double(fread(fin,1));
        for bit=1:8
            right(((rad*8) + bit), byte) = bitget(B, bit);
        end
    end
end

fclose(fin);

left(find(left==0)) = 2;
left(find(left==1)) = 0;
left(find(left==2)) = 1;

right(find(right==0)) = 2;
right(find(right==1)) = 0;
right(find(right==2)) = 1;

figure(2);
colormap gray;
subplot(1,2,1);
imagesc(left);
subplot(1,2,2);
imagesc(right);


Postat: 8 maj 2005, 19:01:13
av bengt-re
aaa... trevligt !!!! Tackar