Epimgconv leírás

From Enterprise Wiki
Jump to: navigation, search

A PC -> EP és TVC képkonvertáló program az ep128emu csomagjának részeként letölthető innen.

Az EPIMGCONV használata

A program legújabb, ep128emu 2.0.11 beta csomagban található verziója grafikus felületű, de továbbra is használható a parancssorból is. A paraméterek alábbi listája nem teljes, azonban az epimgconv --help paranccsal mind kiíratható, és a grafikus felületen is elérhető.

A legegyszerűbb példa:

 epimgconv foo.jpg foo.com

A video módot a -mode paraméterrel lehet választani, és a következő értékek használhatók:

   * 0: 2 színű, normál függőleges felbontás (nem feltétlen fekete-fehér, hanem soronként optimális palettát próbál választani)
   * 1: 4 színű, normál függőleges felbontás
   * 2: 16 színű; 256 színre ditherelt képet konvertál 16 színre dither nélkül (ez az alapértelmezett), normál függőleges felbontás
   * 3: 16 színű; a 2-es móddal azonos palettát generál, de az eredeti képet dithereli 16 színre, normál függőleges felbontás
   * 4: 16 színű; ez a paletta keresést és a dithert próbálja kombinálni, de nagyon lassú, normál függőleges felbontás
   * 5: 256 színű, normál függőleges felbontás
   * 6: attribute mód, normál függőleges felbontás
   * 7: TVC 2 színű, normál függőleges felbontás
   * 8: TVC 4 színű, normál függőleges felbontás
   * 9: TVC 16 színű, normál függőleges felbontás
   * 10: 2 színű, interlace (nem feltétlen fekete-fehér)
   * 11: 4 színű, interlace
   * 12: 16 színű; 256 színre ditherelt képet konvertál 16 színre dither nélkül, interlace
   * 13: 16 színű; a 2-es móddal azonos palettát generál, de az eredeti képet dithereli 16 színre, interlace
   * 14: 16 színű; ez a paletta keresést és a dithert próbálja kombinálni, de nagyon lassú, interlace
   * 15: 256 színű, interlace
   * 16: attribute mód, interlace
   * 17: TVC 2 színű, interlace
   * 18: TVC 4 színű, interlace
   * 19: TVC 16 színű, interlace

A -mode 0-9 tehát a normál függőleges felbontást, a -mode 10-19 pedig az interlace-t alkalmazza.

A --help a program használatát és a paraméterek listáját írja ki rövid leírással.

A -raw 1 használatával program helyett a fent leírt (nyers, külön program nélkül nem használható) formátumban lehet létrehozni a konvertált képet (amit így az IVIEW programmal jeleníthetünk meg Enterpsie-on); így a méret is nagyobb lehet (ha a kimeneti formátum program, akkor csak max. 46 karakter * 288 sor lehet). Az -outfmt n használatával is nyers formában menthetjük a képet, ennek paraméterezése a következő:

  • -outfmt 0, -outfmt 1: ugyanaz, mint a -raw 0 és -raw 1.
  • -outfmt n (11<=n<=59): a nyers formátum tömörítésének mértékét adhatjuk meg. A tömörített és a normál nyers formátum között az ep128emu csomagban található epcompress programmal lehet konvertálni, illetve az uncompress bővítéssel Enterprise-on is kitömöríthetők az ilyen formátumú képek.
  • -outfmt 2: Agsys .crf formátumban menti a konvertált képet. Ezt csak 1-es módban (4 szín/sor, nem interlace) lehet használni, és az Agsys nem tud nagy méretű file-okat betölteni (a -size 36 216 még működik, de például a -size 40 240 már nem). Bár az Agsys támogatja a soronként változó palettát, a képet egyszerűbb lehet szerkeszteni a -palres 0 vagy -color0..-color3 paraméterekkel fix palettát beállíítva.
  • -outfmt 3: a ZozoTools VL és VS parancsok által használt formátumban írja a konvertált képet. Interlace és attribútum módokat nem támogat, és a file méret legfeljebb 16K lehet. Ez a formátum automatikusan -palres 0-t és EXOS-kompatibilis képméretet (legfeljebb 42x27 karakter, 9-el osztható magasság) állít be, akárcsak az -outfmt 4.
  • -outfmt 4: PaintBox formátum; ez szintén nem támogatja az interlace módokat, és a file nem tárolja a FIXBIAS-t, így azt vagy a konverter által kiírt értéknek megfelelően be kell állítani, vagy a konverziónál a -bias 23 paramétert kell használni. A formátum automatikusan -palres 0-t és EXOS-kompatibilis képméretet (legfeljebb 42x27 karakter, 9-el osztható magasság) állít be, mint az -outfmt 3 is.
  • -outfmt 5: Zaxial formátum, a PaintBox-hoz hasonló korlátozásokkal, de tárolja a bias értékét. Attribute mód esetén a file csak az eredeti VLOAD paranccsal tölthető be, a Zaxial nem támogatja ezt a módot.
  • -outfmt 6: Fejléc nélküli formátumban lehet menteni csak az attribútum és pixel adatot. Ez automatikusan "-palres 0"-t állít be. Attribútum módban először az attribútumokat menti, aztán a pixel adatot. Elvileg interlace módban is lehetne használni, de ez egyelőre hibás, mert a második félkép pixel adata elcsúszik 8 byte-tal. Célja: egy hagyományos grafikával (pl. a 4 színű Wriggler) rendelkező programba lehessen PC-n megrajzolt grafikai elemekből közvetlenül felhasználható pixel adatbájt kupacot konvertálni. Pl: egy 16x16-os 4 színű BMP konvertálása: epimgconv_sse2 sprite.bmp sprite.raw -size 2 0 -dither 0 0 -nointerp 1 -mode 1 -outfmt 6
  • -outfmt 50: tömörítetlen TVC KEP formátum
  • -outfmt 55: RLE tömörített TVC KEP formátum
  • -outfmt 51 vagy 56: epcompress -m2 tömörített TVC KEP formátum
  • -outfmt 52 vagy 57: epcompress -m0 tömörített TVC KEP formátum


A méretet a -size W H állítja, W = szélesség karakterekben, H = magasság (interlace esetén félkép-) sorokban. Ha a -size után megadott egyik érték 0 vagy negatív, akkor azt kiszámolja a másikból és a kép méretéből. Például a -size 46 0 azt jelenti, hogy a szélesség mindig 46 karakter, a magasságot pedig automatikusan választja a kép mérete alapján. Így azonban a magasság túl nagy is lehetne, ezért negatív értéket megadva be lehet állítani egy maximális méretet. A -size 46 -300 hatása tehát azonos a -size 46 0-al, de ha a magasság így nagyobb lenne, mint 300 sor, akkor az 300 sor lesz, és a szélességet csökkenti.

Alapértelmezés szerint a program a képet a legnagyobb méretre konvertálja, ami még éppen kifér (ha oldalt vagy felül és alul marad hely, akkor azt keretszínnel tölti fel), de a -scale X Y és -offset X Y segítségével lehetőség van a kép nagyítására és eltolására.

A -scalemode 1-et beállítva a képet nem úgy méretezi át, hogy a legnagyobb méretű legyen levágott részek nélkül, hanem a legkisebb üres (keretszínű) területek nélkül. Tehát ha a -size paraméterrel beállított szélesség és magasság aránya nem megfelelő, akkor nem lesznek keretszínnel feltöltött területek, hanem a kép egy részét levágja oldalt vagy alul és felül.

A -color0 n ... -color7 m (n, m: színkód száma) paraméterekkel fix palettaszíneket lehet megadni (egyelőre nem tudja, hogy ne használjon egyes színeket). Mivel a -mode 0 vagy -mode 10 nem direkt fekete-fehér képet generál, a fekete-fehér képet a -color0 0 -color1 255 paraméterek megadásával lehet elérni. A színeket #RGB formátumban is meg lehet adni, pl. a #000 a fekete és a #773 a fehér szín.

A -bias paraméterrel a fixbias állítható - így esetleg jobb minőséget is el lehet érni, mint az automatikusan választott értékekkel. A színeket #RGB formátumban is meg lehet adni, pl. a #331 a bias=31.

Ha a .com file túl nagy (>47.75K) lenne, akkor a program automatikusan tömöríti; így - szerencsés esetben - az EXOS már be tudja tölteni, igaz, sokkal lassabban indul el. A -nocompress 1 használatával a "nagy" programok automatikus tömörítése letiltható.

A -nointerp 1 kikapcsolja az interpolációt a kép átméretezése közben (pl. 32x32 -> 512x512 2 színű interlace formátumra konvertálva interpoláció nélkül; így minden pixel pontosan 16x16 méretű négyzet lett)

A -palres 0 letiltja a soronként változó palettát (az alapértelmezés a -palres 1), így a paletta az egész képen ugyanaz lesz. Ez általában rontja a minőséget, ezért nem tűnhet túl hasznosnak, de így valamivel kisebb lehet a konvertált file, és esetleg más programokban is egyszerűen lehet használni.

Egyéb paraméterek:

  • -saturation N: színtelítettség módosítása (alapértelmezés: 1.0)
  • -gamma N: gamma korrekció (alapértelmezés: 1.0), csak a világosságra van hatása, az alacsonyabb értékek sötétebb képet eredményeznek
  • -ymin N, -ymax N: fényerő és kontraszt állítása, a bemenetet 0.0-1.0 tartományról YMIN-YMAX-ra konvertálja. YMIN>YMAX negatív képet eredményez.
  • -chromaerr N: színek összehasonlításakor a szín információ súlya a világossághoz képest (0.05-1.0, alapértelmezés: 0.5), azaz a legalacsonyabb beállítás fekete-fehér megjelenítésre optimalizál
  • -quality N (1-9, alapértelmezés: 3): paletta keresésekor az iterációk számát szabályozza, nagyobb értékek lassabb konverziót és általában csak kis javulást eredményeznek. Ezért a paraméterekkel való kísérletezésnél célszerű alacsony beállítást használni és csak a végleges képnél növelni
  • -dither T D: dither típusa és diffúziós dither esetén a diffúzió mértékét szabályozó paraméter (alapértelmezés: 1 0.95). A használható típusok: 0: nincs dither, 1: Floyd-Steinberg, 2: Stucki, 3: Jarvis, Judice & Ninke, 4: rendezett (Bayer), 5: rendezett (véletlenszerű, a void-and-cluster módszerhez hasonló). A rendezett dither a video módok többségében korlátozottan támogatott, csak a 2-es, 5-ös és 9-es módban illetve ezek interlace változatában ad színes képet, egyébként csak a pixelek és a paletta színek világosságát veszi figyelembe.


.jpg, .png, .gif, .bmp, és .xpm formátumot eszik meg a program.

IstvanV

Tippek

A következő módszereket alkalmaztam és kombináltam:

  • az attribute mód adja a legjobb eredményt, utána a 4 szín mód;
  • olyan képeket válogattam ki, amelyek nem túl bonyolult struktúrát tartalmaznak;
  • kivágtam a képből a legjobb részletét, de úgy, hogy azért a kompozíciója szép maradjon;
  • olyan képeket kerestem, ahol kihasználódik, hogy vízszintesen elválasztott részeken eléggé sokféle szín legyen;
  • sokféle és erős színeket tartalmazó képeket használtam.

Szóval ahol ezek a legjobban érvényesültek, azok lettek a legjobb konverziók.

Endi


Ez 16 szín attributum mód, soronkénti palettával, és interlace-szel, fényképszerű képeknél ez vált be leginkább:

  • epimgconv_sse2 jpgname eppicname -size 42 280 -quality 9 -mode 16

Zozosoft

Az EPimgconv/IVIEW formátum leírása

000h-00Fh: fejléc

  • 000h: 0
  • 001h: 049h (EXOS file típus)
  • 002h: video mód ennyi soronként változik (0: egész képen azonos)
  • 003h: FIXBIAS ennyi soronként változik (0: egész képen azonos)
  • 004h: paletta ennyi soronként változik (0: egész képen azonos)
  • 005h: interlace mód
   bit 7: 2x függőleges felbontás (az első félkép a felső)
   bit 4: video adat interlace
   bit 3: attribute interlace
   bit 2: paletta interlace
   bit 1: FIXBIAS interlace
   bit 0: video mód interlace
  • 006h-007h: magasság (interlace esetén félkép) sorokban
  • 008h: szélesség karakterekben
  • 009h: keret szín
  • 00Ah: tömörítés típusa (0: nincs; 1: epcompress -m2, 2: epcompress -m0, 3: epcompress -m3, 4: zlib)
  • 00Bh: animáció/interlace képkockák száma, 0 vagy 1: egyszerű állókép, 2: interlace, stb. (interlace módban mindig páros)
  • 00Ch: animáció sebessége (képkockák közötti idő 1/50 másodpercben; 0: 1/50 másodperc) függőleges interlace esetén az időegység 1/25 másodperc, a teljes kép ismétlődik
  • 00Dh: attribútumok ennyi soronként változnak (0: 1 soronként)
  • 00Eh: 0 (fenntartva későbbi verziókhoz)
  • 00Fh: 0

010h-: kép adat

  video mód 0 (LPT mód & 07Eh)
  video mód 1 (csak interlace módban)
  ...
  FIXBIAS 0 (csak 16 színű és attribute módokban)
  FIXBIAS 1 (csak interlace módban)
  ...
  paletta 0 (256 színű módban nincs, 2 és 4 színű módban csak 2 vagy 4 szín, egyébként 8 szín)
  paletta 1 (csak interlace módban)
  ...
  attribute adat 0 (csak attribute módban)
  attribute adat 1 (csak interlace módban)
  ...
  video adat 0
  video adat 1 (csak interlace módban)
  ...

Tömörített formátum esetén a video mód, fixbias, és paletta, illetve az attribútum és pixel adatok két külön tömörített blokkban találhatók. A tömörített adatblokk formátuma:

  • +000h: tömörítetlen méret alsó byte
  • +001h: tömörítetlen méret felső byte
  • +002h: tömörített méret (N) alsó byte
  • +003h: tömörített méret (N) felső byte
  • +004h - +(004h + N - 1): nyers tömörített adat, lásd az epcompress csomagban található Z80 kitömörítő forráskódot

A TVC KEP formátum leírása

000h-00Fh: fejléc

  • 000h: 4Bh ('K')
  • 001h: 45h ('E')
  • 002h: 50h ('P')
  • 003h: video mód és tömörítés:
   bit 7: 1 = a kép epimgconv bővítés(eke)t használ
   bit 6: 1 = interlace módú kép (kétszeres függőleges felbontás; epimgconv bővítés)
   bit 5: 1 = soronként változó palettájú kép (epimgconv bővítés)
   bit 2-4: tömörítés típusa:
       000b: formázatlan, tömörítetlen kép (a fejléc hossza csak 8 byte)
       001b: RLE tömörítés, soronként változó paletta esetén csak a pixel adaton
       010b: formázott tömörítetlen kép normál 16 byte-os fejléccel
       011b: RLE tömörítés, ugyanaz mint a 001b mód
       100b: epcompress -m2 tömörítés (epimgconv bővítés)
       101b: epcompress -m0 tömörítés (epimgconv bővítés)
       110b: epcompress -m3 tömörítés, a képnéző program jelenleg nem támogatja (epimgconv bővítés)
       111b: zlib tömörítés, epcompress bővítéseket is használhat, a képnéző program nem támogatja (epimgconv bővítés)
   bit 0-1: video mód:
       00b: 2 színű
       01b: 4 színű
       10b: 16 színű (nincs paletta)
       11b: érvénytelen
  • 004h-007h: paletta színek, soronként változó paletta vagy 16 színű mód esetén nem használt
  • 008h-009h: a kép szélessége pixelekben, az alsó byte az első, formázatlan képnél fix 64 byte a szélesség. Az epimgconv-hoz készült új képnéző program egész számú byte esetén működik helyesen
  • 00Ah-00Bh: a kép magassága pixelekben, interlace módban a teljes felbontás, az alsó byte az első. Formázatlan képnél mindig 240 sor a magasság. A képnéző program helyes működéséhez egész számú CRTC "karakter" ajánlott, azaz 4 (vagy interlace módban 8) sor többszöröse. Egy félkép mérete nem lehet nagyobb mint 16384 byte, és a régebbi képnéző programok csak 64 byte * 240 sor méreten belül működnek
  • 00Ch: a keret színe (epimgconv bővítés)
  • 00Dh: nem használt (mindig 0)
  • 00Eh-00Fh: paletta adat tömörített mérete (csak soronként változó paletta és epcompress tömörítés esetén), az alsó byte az első, epimgconv bővítés

Paletta adat

Soronként változó palettánál a fejlécet a paletta adat követi, ami epcompress tömörítés használatakor szintén tömörített külön blokkban. Interlace módban a formátum a félképeket külön tárolja, de tömörítésnél nem kerülnek külön blokkba.

Pixel adat

A fejléc és (ha van) a paletta blokk után a pixel adat következik, a palettához hasonló módon tárolva. RLE formátumnál csak ez a blokk tömörített, és az RLE sorozatok nem léphetnek át sor határt.

Verziótörténet

2016.12.22.: grafikus felület és TVC video módok támogatása.

2016.11.13.: az ep128emu 2.0.10 verzióval a konvertáló program az emulátor csomagjának a része lett.

2011.09.03.: -outfmt 6 Zozosoft kérésére. Interlace módban egyelőre hibás, a második félkép pixel adata elcsúszik 8 byte-tal.

2008.11.22.: Csak kisebb változtatások:

  • Attribute módban, ha -quality 9 és -palres 1 van beállítva, akkor más algoritmussal keresi a fixbias-t; ez nem biztos, hogy mindig jobb minőséget eredményez, de ha veszteségmentes konverzió lehetséges, akkor azt biztosan megtalálja, és nem változtatja meg a bias értékét, ha alul és felül keretszínnel feltöltött terület van.
  • Egy kisebb hiba javítva: a nagy telítettségű és nagyon világos vagy sötét színeket hibásan kezelte, ezért nem volt veszteségmentes a konverzió).
  • A csomag tartalmazza az imgsave.lua és uncompress.ext segédprogramokat is, és néhány régebbi verzió forráskódját.

2008.11.11.: Zaxial rajzolóprogram formátumában is lehet menteni a konvertált képeket, illetve attribute módban ezt a formátumot be lehet tölteni az eredeti "VLOAD" paranccsal. A 16 színű módokban (2, 3, 4, 6) gyorsabb lett a konverzió, ami elsősorban a -mode 4 esetén jelentős. A -mode 2 és 3 is észrevehetően gyorsabb, ha -quality 9 van beállítva. További változtatás, hogy a dither korábban néha hibásan működött a nagyon világos vagy sötét részeknél - ezt leginkább a 16 színű módokban -palres 0-nál lehetett észrevenni - amin az új verzió javítani próbál.

2008.11.07.: Új paraméter: -palres; -outfmt 3, -outfmt 4: Zozotools és Paintbox formátumba is lehet menteni.

2008.10.31.: A -size utáni 0 vagy negatív érték megszámoltatja a gépet ill. megadja a maximális lehetséges méretet.

2008.10.30.: -scalemode 1 és -outfmt 2 (Agsys formátumba mentés) paraméter.

2008.10.29.: Tömörített formátum esetén külön tárolja a mód/bias/paletta, illetve az attr/pixel adatokat (jelenleg mindkettőt tömörítve). A paletta és attribútumok rendezésével javult a hatásfok is valamennyire.

Ezen kívül a letölthető csomag tartalmazza az IVIEW aktuális verzióját is.


2008.10.24.: Az adatok típus és nem félkép szerint vannak rendezve; az automatikusan tömörített .com file-ok most már futnak EP64-en is; a fejléc tartalmazza a képkockák számát.


2008.10.20.:

Beállítja a VRES bitet;

A 2 színű módban az alapértelmezett beállításokkal most már nem egy fix fekete-fehér palettát használ, hanem minden sorban optimális palettát próbál választani, a 4 színű módhoz hasonlóan. A régi fekete-fehér módot a -color0 0 -color1 255 paraméterekkel lehet visszaállítani;

Új paraméter: -outfmt.


2008.10.19.: Bármilyen méretű képet elfogad 1x1 és 8192x8192 között, a beépített tömörítő gyorsabb és valamivel jobb hatásfokú lett, a programok futnak EP64-en is (az automatikusan tömörítettek még nem); Új paraméterek: -nointerp és -nocompress.


2008.06.07.: -color0-7, -bias paramtérek is megadhatók; ha a .com file >48K, akkor tömöríti.


2008.06.02.: Attribute és interlace mód beállítási lehetőségek.


2008.05.31.: Első változat, még nem tartalmaz attribute és interlace módot, csak a fekete-fehér mód volt interlace-es.

Linkek, egyebek


en:Epimgconv