Anonymní profil MilanL – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil MilanL – Programujte.comAnonymní profil MilanL – Programujte.com

 

Příspěvky odeslané z IP adresy 185.112.167.–

Assembler › Multiplexní řízení sedmisegm…
11. 6. 2023   #391355

#17 remmidemmi
#18 hlucheucho
Ty simulátory vycházejí též z toho, jak jsou dnes stavěné hotové výukové a develop desky typu arduino apod, případně na výuku, aby se studenti naučili určíté způsoby programování.

Co se týče Programování vs Kódování, tam panují 2 rozdílné výklady a pak záleží, se kterým výkladem se člověk setká:

1. výklad bere Programování jako nadřazenou úroveň, pod kterou spadá několik dílčí činností včetně Kódování:
 - Algoritmizace = analýza zadání/problému/požadované funkcionality a vytvoření obecného návrhu řešení => Vývojový diagram
 - Kódování = vlastní tvorba programu na základě Algoritmizace
 - Testování = ověření funkčnosti programu, zda odpovídá zadání

2. výklad rozlišuje Programování a Kódování takto:

 - Programování = vytváří funkcionalitu a používá proměnné (C/C++, C#, Java, Javascript*, Python, PHP ...)

 - Kódování = definuje vzhled místo proměnných se používají značky/tagy (HTML, CSS, XML, JSON ...)

Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390639

#36 oxidián


Tak hochu je to úplně jinak, v Image bufferu, jsou řádky uloženy pozpátku,

Ono nás v podstatě nenapadlo že vlastně v počítačové grafice je pixel 0 0 vlevo dole..

EDIT:

Takže při kontinuálním zpracování zhora stačí, když si jako první pointer natáhneš ScanLine[Height-1]

JInak koukal jsem i na tu změnu pixel formátu, tak se automaticky vytvoří nový image buffer a starý formát převede. - pozor při testování rychlosti toto přeformátování též nějaký čas zabere.

Delphi › Jak převést tři bajty RGB na…
25. 11. 2022   #390630

#27 gna

ale on má jiný problém plave v tom jak se s obrázky pracuje.

Načtený obrázek má pixelformát 24bit a on si myslí, že jednoduchou změnou toho property pixelformat ma 32bit se mu hned ten obrázek převede.

Dle mého musí provést konverzi do nové bitmapy.

MilanL
Delphi › Jak převést tři bajty RGB na…
24. 11. 2022   #390616

#8 gna
#9 oxidián
co se týče polí, je pak lepší pracovat s polem Bajtů nebo jednotlivým Byte  a dle hloubky načítat do  barvy daný počet bajtů

MilanL
Delphi › Jak převést tři bajty RGB na…
24. 11. 2022   #390615

#13 MilanL
u posledního Dwordu má být 1B 3.pixelu a 3B 4.pixelu

MilanL
Delphi › Jak převést tři bajty RGB na…
24. 11. 2022   #390614

#9 oxidián
ale o těch pointerech jsem psal hned na začátku ten kus kodu včetně té dereference, navíc kdyby sis na netu našel scanline věděl bys, že vrací pointer a je lepší pouzívat je než přetypovávat adresy na Dword, při změně platformy pointer bude fungovat, ale dword může a nemusí.

a druhým problémem je, že při 24bitové hloubce použitím dwordu si rozhodíš barvy, je třeba použít správný formát

scanline ti vrátí adresu kde začíná 1.bod řádky a v řádce máš dle bitové hloubky pro každý pixel daný počet bajtů, tzn při 24b hloubce načtením Dwordu načteš 3B 1.pixelu + 1B 2.pixelu, při posunutí o Dword v dalším cyklu načteš 2B 2.pixelu + 2B 3.pixelu a další posun 1B 3.pixelu + 2B 4.pixelu a musel bys to pak složitě převádět.

MilanL
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390605

#2 MilanL

další příklad ono stačí trošku hledat (máš tam zjištění i případnou změnu včetně malého popisu formátů.

https://stackoverflow.com/questions/15297320/change-a-bitmaps-pixel-colour

MilanL
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390604

#1 oxidián
používej pointery jinak ti to bude házet nesmysle.

nedopisoval jsi tem něco tu druhou 1/2 jsem dřív neviděl

MilanL
Delphi › Jak převést tři bajty RGB na…
23. 11. 2022   #390603

#1 oxidián
Ukazuješ moc malý kus kodu, např nevidím zda zjišťuješ formát bitmapy, nevím co za proměnnou je pixel.

Zkusil bych vyjít z této odpovědi

https://www.tek-tips.com/viewthread.cfm?qid=1076418

Pixel je tam pointer na 3bajtový typ 24bitové barvy, pokud máš 32bit je tam ještě 4. hodnota Alfa kanál.

To co děláš je blbost scanline dává pointer do paměti na daný pixel.

Pokud chceš do Pixelu barvu je třeba použít dereferenci.

Takže jednoduchá cesta je

var
   Pixel : DWORD;
   PPixel : ^DWORD;

...
   
   PPixel := bm1.scanline[0];
   Pixel := PPixel^;

v pixel by mělo zůstat 32bit číslo barvy s alfa kanálem, pak stačí pomocí AND 0x00FFFFFF a zbyde ti 24 bitů barevných složek.

V případě 24bit obrázku je nutno použít tu strukturu z odkazu, bo delphi nemá typ pro 24bitové číslo.

C / C++ › Použití různých verzí téže m…
17. 7. 2021   #388191

#1 Jeník Veliký

nejednodušší mi přijde řešení které používají backcall funkce, vytvořit si proměnou s ukazatelem na funkci a do té při výběru vložit pointer na vybranou funkci a v následném kodu již volat funkci pomocí té proměnné.

EDIT: pokud to budeš hledat tak ne backcall ale callback

C / C++ › Diskuze: Praca so strukturou…
23. 3. 2021   #387660

#1 Jozef
tak jak to máš dělané to nefunguje, pole z textového souboru musíš číst po řádkách a až následně řádku převést do pole.

Jsou různé způsoby ukládání a načítání, jiná situace by byla pokud bys měl data uložená binárně z pole stejné struktury, pak lze z velikosti souboru určit počet záznamů, rezervovat v paměti místo pro pole a načíst soubor binárně.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý