Amiga Dünyası sayı 19, sayfa 81

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 81

WEND p BodyLength=CVL(INPUT$(4,1)) LongsPerRow=(FIX(en/16-.001 )+1 )/2 IF Compression=0 THEN GOTO DatNormal Decrunch: PRINT "RESİM SIKISTRILIMIS" OPEN "RAM:TempData" FOR OUTPUT AS 2 WHILE Count < BodyLength Dat=ASC(INPUT$(1,1)): Count=Count+1 IF Dat>-1 AND Dat<128 THEN PRINT #2,INPUT$(Dat+1,1); Count=Count+Dat+1 END IF

IF Dat>128THEN Dat$=INPUT$(1,1): Count=Count+1 IF Dat$="" THEN Dat$=CHR$(0) Dat$=STRING$(256-Dat+1,Dat$) PRINT #2,Dat$; END IF

'Program "Amir.r.Amlr" DECLARE FUNCTION GetRGB4& LIBRARY LIBRARY ":bmaps graphics.library"

Input" DOSYA ADI";PlcName$ n Win& = WINDOW(7) Scrn&=PEEKL(Win&+46)

en=PEEKW(Scrn&+12) boy=PEEKW(Scrn&-»-14) BitMapAdr&=PEEKL(Scrn&+88) derin=PEEK(BitMapAdr&+5) ColorMap$=PEEKL(Scrn&+48) FOR l=0 TO derin-1

BitMap&(i)=PEEKL(BitMapAdr&+8+i*4) NEXT i

OPEN PicName$ FOR OUTPUT AS 1 PRINT #1,"FORM"; Uz&=48+2Aderin*3+en*boy*derin/8 PRINT #1,MKL$(uz&); PRINT #1,"ILBM";"BMHD"; PRINT #1,MKL$(20); PRINT #1 ,MKI$(en);MKI$(boy); PRINT #1 ,MKL$(0);CHR$(derin); PRINT #1 ,CHR$(0);MKI$(0);MKI$(0); PRINT #1,CHR$(10);CHR$(11); IF en>350 THEN PWidth=640 ELSE PWidth=320

WEND q CLOSE OPEN "RAM:TempData" FOR INPUT AS 1 DatNormal:

FOR y=0 TO boy-1

FOR z=0 TO Derin-1

FOR x=1 TO LongsPerRow bnb POKEL BitMap&(z)+Count(z),CVL(INPUT$(4,1))

Count(z)=Count(z)+4 NEXT x NEXT z NEXT y

END:

CLOSE IF Compression=1 THEN KILL "RAM:TempData" END

IF boy>350 THEN PHeight=512 ELSE PHeight=256 PRINT #1 ,MKI$(PWIdth);MKI$(PHeight); PRINT #1,"CMAP"; o PRINT #1,MKL$(2*derin*3); FOR FNr%=0 TO (2Aderin-1)

Wt%=GetRGB4& (ColorMap&,FNr%)

PRINT #1 ,CHR$((Wt% AND 3840)/16); PRINT #1,CHR$(Wt% AND 240); PRINT #1,CHR$((Wt% AND 15)*16); NEXT FNr%

PRINT #1 ."BODY"; PRINT #1,MKL$(boy*en*derln/8); LongsPerRow=(FIX(en/16-.001 )+1 )/2 FOR y=0 TO boy-1 FOR z=0 TO derin-1 FOR x=1 TO LongsPerRow Wt&=PEEKL (BitMap&(z)+Count(z)) PRINT #1,MKL$(Wt&); Count(z)=Count(z)+4 NEXT x NEXT z NEXT y CLOSE 1 PRINT" Dosya kaydedildi!!!!"; END

Maalesef burada yine Library fonksiyonlarına işimiz düşüyor. Hepinize kolay gelsin.

Programı yazarken verilen numaralara bağlı kalarak yazmalısınız. Yani 1 numaralı bölümden başlayacaksınız, 2, 3 şeklinde alt alta yazacaksınız.

Yukarıda bulunan program ismini ve DOS adresini girebileceğiniz herhangi bir 32'ye kadar renge sahip olan resmi yükleyebilir. Basic'in keleğinden 256 satırlık resimleri yükleyemiyor. (Hani haberiniz ola!!!).

Hemen sizi uyaralım, program, özellikle sıkıştırılmış resimleri açarken çok zaman geçecektir. Program bu yüzden çok kullanışlı sayılamaz. Programcılar kısa sürede bunun farkına vardılar ve Amiga Basic'ten hızlı yüklenebilen bir dosya geliştirdiler bu dosya türüne ACBM dosyaları adı verilmektedir. İşin kötü yanı IFF resimleri kullanabilmek için önce bu resimleri ACBM formatına çevirmek gerekir. Bu çevrim işini yapabilmenin temel şartı resmi yükleyebilmek. Ancak bir kere ACBM'e çevrilmiş bir resmi artık hızlandırılmış olarak yükleyebilir ve kaydedebilirsiniz. Deluxe Paint gibi bir program da bu ACBM'leri yükleyemeyeceğinden yine çevrimlere ihtiyaç duyulacaktır.

Sorunlarına rağmen bu dosyayı kullanmak istiyorsanız, örnek bir programı bilgisayarınızla birlikte gelen Workbench/Extras disketinin BasicDemos kısmında bulabilirsiniz.

Yükleme kısmını hallettik. Kayıt işine gelelim. Kaydederken, dosyanın ACBM veya IFF olması fazla bir hız farkı getirmez. Ayrıca sıkıştırma kısmını yazıp yazmamak sizin keyfinize kalmış. Herhangi bir program sırf sıkıştırılmamış diye sizin resimlerinizi yüklememezlik etmeyecektir. Bu yüzden yazacağınız bir kayıt programında sıkıştırma kısmına yer vermenize gerek kalmaz. Daha pratik bir çözüm ise ScreenX utility'sini kullanarak sağlanır. ScreenX bir ekranı IFF olarak kaydetmeye yarayan bir program (Amiga Dünyası Sayı 17, Sayfa 37).

Son örneğimiz resmi IFF olarak kaydediyor.

Klavyeyle gezinmek için ← ve → tuşları.