Autor Zpráva
final
Profil
Zdravím,
mám 2 obrázky:
- prvy.jpg(192x192), každých 64x64 je na pozadí iná farba(teda dokopy 9)
- druhy.jpg(64x64), na pozadí je prvá farba z prvy.jpg
$prvy = imagecreatefromjpeg('img/prvy.jpg');
$druhy = imagecreatefromjpeg('img/druhy.jpg');
$dest = imagecreatetruecolor(64, 64);
imagecopy($dest, $prvy, 0, 0, 0, 0, 64, 64);
header('Content-Type: image/jpeg');
imagejpeg($dest);
Výsledok je že vytvorený obrázok je rovnaký ako druhy.jpg(rovnaká farba pozadia,rovnaká veľkosť).
Dajú sa porovnať tieto 2 obrázky? Niečo ako
$img=imagejpeg($dest);
if ($img == $druhy) {
    echo "sú rovnaké :)";
}else {
    echo "nie sú rovnaké :(";
}/
To ale nefunguje keďže tam mám header('Content-Type: image/jpeg');


ďakujem za pomoc
midlan
Profil
final:
To ale nefunguje keďže tam mám header('Content-Type: image/jpeg');
pokud ten obrázek nechceš vykreslovat tak to tam nedávej, stejně si ale myslím, že obrázky nepůjdou porovnat jako resource.
Já bych to asi zkusil tak, že bych si vypsal do uoutput buferů oba obrázky a pak výstup porovnal, podmínkou bude určitě použití stejné komprese a formátu pro oba obrázky, možná ale plácám a i tak to nepůjde.
final
Profil
midlan:
á bych to asi zkusil tak, že bych si vypsal do uoutput buferů oba obrázky a pak výstup porovnal
A to ako?

pokud ten obrázek nechceš vykreslovat tak to tam nedávej
no pokiaľ to tam nie je, tak to vypisuje len divné znaky
Kubo2
Profil
final:
pokial ho nechces vykreslovat, cize tam nedas to imagejpeg($img), tak ti nevypise ani divne znaky.
peta
Profil
"To ale nefunguje keďže tam mám header('Content-Type: image/jpeg');"
Tak to tam nedavej, kdyz chces po php vystup text/html "sú rovnaké :)".

jpeg1(65% kvality) zakomprimovany na jpeg2(65% kvality) obsahuje jina data nez nez puvodni jpeg1. Pokud to dekomprimujes do bitmapy, tak se barvy pixelu nemusi 100% shodovat, protoze jpeg je ztratova metoda. Nejvetsi shodu dostanes, pokud budou obrazky obsahovat mirne prechody. Kdyz si v grafickem programu udelas sachovnici bily pixel, cerny pixel, ulozis to jako jpeg65%, pak to zobrazis, bude to sachovnice svetle seda, tmave seda. Pokud to jeste jednou zkomprimujes, tak se barvy k sobe jeste vic priblizi, ale uz to nebude tak vyrazne jako u bile-cerne.

Jak to porovnat? Mas script pro zmensovani obrazku? Porovnej rozmery rozdil, porovnej velikost souboru. Pokud tam bude 90% rozdil, povazuj to za shodu, pouzij prvni obrazek. Nekdy se muze stat, ze zmensenim obrazku o malinko se zvetsi data pro ulozeni. A roztahovat mrnavy obrazek 30x30 na 100x100 je tez neusporne. Ale muze to byt prakticke pro dalsi praci.

http://php.net/manual/en/function.getimagesize.php
user243
Profil
a zkusit je třeba porovnat pomocí md5 nebo sha1?
final
Profil
peta:
Jak to porovnat? Mas script pro zmensovani obrazku? Porovnej rozmery rozdil, porovnej velikost souboru. Pokud tam bude 90% rozdil, povazuj to za shodu, pouzij prvni obrazek. Nekdy se muze stat, ze zmensenim obrazku o malinko se zvetsi data pro ulozeni. A roztahovat mrnavy obrazek 30x30 na 100x100 je tez neusporne. Ale muze to byt prakticke pro dalsi praci.
no, ale to by sa nedalo použiť na to na čo to potrebujem ja..
toto všetko som chcel aplikovať na generovanie mapy:
-na začiatku veľký obrázok(napr. 5000x5000px) a rozsekať ho napr. po 50x50 do databázy, a keďže na tom obrázku bude veľmi veľa typov políčok tak žiaden iný spôsob generovania ma nenapadol
nejaké nápady?
Mike8748
Profil
final:
chápu dobře že máš mapu (velký obrázek) která je vytvořená samostatně nezávsle na skriptu a ty ji chceš skriptem zanalyzovat pro potřeby hry (toho skriptu)?
v prvej řadě si zajisti že nebude použito JPG ani jiného ztrátového formátu obrázku

a keďže na tom obrázku bude veľmi veľa typov políčok
kolik typů? jsou nějak definované? podle čeho je chceš rozlišovat?
edit: a ještě... jak ty pole vypadají? jen barva nebo skutečně obrázek něčeho?
final
Profil
Mike8748:
chápu dobře že máš mapu (velký obrázek) která je vytvořená samostatně nezávsle na skriptu a ty ji chceš skriptem zanalyzovat pro potřeby hry (toho skriptu)?
v prvej řadě si zajisti že nebude použito JPG ani jiného ztrátového formátu obrázku
jasné, že nie jpg, to bolo len pre test..
áno, mám mapu(veľký obrázok) a z toho chcem vždy na začiatku servera vygenerovať mapu do databázy

kolik typů? jsou nějak definované? podle čeho je chceš rozlišovat?
edit: a ještě... jak ty pole vypadají? jen barva nebo skutečně obrázek něčeho?
myslím, že veľa typov, chcel som všetky typy uložiť do array-u a následne porovnávať zhodu

niekde som čítal že si mám uložiť farbu 1 pixela z každého typu obrázku(napr. 1px v strede každého 50x50) a následne prejsť celý veľký obrázok..ale to nie je dobré riešenie pretože s 1 farbou by vyhovovalo viac typov obrázkov..a ukladať si viac ako 1 farbu mi príde zbytočné..
Mike8748
Profil
final:
no... bez znalosti obrázků těžko říct...

pokud jeden pixel pro identifikaci nestačí tak jich samozdřejmě potřebuješ více (např na obrázku 50x50 vzít střed, a body 10 pixelu od něj na všechny 4 strany), pak porovnávat několik čísel, a na základě toho ten obrázek identifikuješ.

a ukladať si viac ako 1 farbu mi príde zbytočné..
tomu se stejně nevyhneš :)

pokud je typů omezený a konečný počet (což předpokládám že je) tak si udělej mapu (asoc. pole) kde bude uloženo kombinace identifikátoru(názvu) typu a hodnoty klíčových pixelů (jejichž pozice budou vždy stejné v rámci obrázku a zvolené tak aby hodnoty pixelů byly jedinečné v rámci celé sady typů) a pak budeš mapu porovnávat s těma hodnotama.... jiné jednodušší řešení není. není třeba porovávat celou bitmapu ale stačí právě dostatečný počet pixelů (jejichž počet záleží na složitosti typů/mapy)


taky je otázka jak ta mapa kterou budeš zpracovávat vzniká... jestli by se nedalo tento proces pozměnit tak aby celá analýza o kterou se pokoušíš nebyla vůbec zapotřebí
final
Profil
Mike8748:
taky je otázka jak ta mapa kterou budeš zpracovávat vzniká
klasickým výberom z db po blokoch
Mike8748
Profil
final:
pokud obrázek vzniká výběrem.... tak víš z čeho je složen... tak proč to chceš zpětně analyzovat?

při vytváření si někam do 2d pole ukládej ID obrázků které tvoří výsledek, to pak převedeš na string který někam uložíš (třeba do metadat obrázku)
pak stačí akorát načíst ten string, převést ho zpět na 2d pole a máš to, žádná analýza není třeba. porovnáváním obrázků si to jen komplikuješ

edit: případně už při vytváření mapy do DB ukládej to čeho chceš docílit tím porovnávánim obrázků, uloženým datům přiřadíš ID nebo hash (tedy budeš mít ID mapy) a pracuj s tímto údajem
final
Profil
Mike8748:
pokud obrázek vzniká výběrem.... tak víš z čeho je složen... tak proč to chceš zpětně analyzovat?
no, ale na to aby vznikol výberom potrebujem najprv na začiatku tu mapu mať v db :)-a to je ten proces, ktorý tu riešim)
peta
Profil
final:
Pokousi se ti tu naznacit, ze ten ctverecek 100x100 muzes vygenerovat uzivateli skladanim obrazku, ktere na nem jsou a ne opacne analyzovat obrazek, co je v databazi. Pripadne si ulozit do databaze, co na tom obrazku je pri jeho vytvareni.
Nevim, proc chces vzit obrazek a hledat na nem objekty. Pro hledani objektu je nejlepsi pouzit nejakou metodu hledani okraju, hran. Najit obrys, zmensit ho na urcitou velikost, porovnat s obrysem teze velikosti v databazi a rici, jak moc se shoduji (mas velkou fotku, udelas obrys obliceje, okoli od obrysu zahodis, obrys zmensis na 50x50, porovnas v db s obrysem 50x50).
Pokud ale presne vis, co na tom obrazku je a umis z neho vybrat unikatni 1-n barev a jejich pozici, tak je to pak snadnejsi nez hledat obrysy.
Bys musel ukazat obrazek a co na nem chces hledat.

---
html5 canvas pozadie + postava
Uz to chapu, asi. Ty sis nakreslil jpeg a chces ho pouzit jako pozadi do hry. A pak z toho obrazku chces detekovat kolizi objektu a zjistovat druh objektu. Tak to mas hodne vesele :) Nech uzivatele, ktery ten obrazek udelal, vyznacit, oramovat objekty. Detekce samozrejme jde resit, jak jsem popsal, ale prijde mi to ne tak uplne spolehlive, pokud bude vice obrazku podobnych.
final
Profil
peta:
Uz to chapu, asi. Ty sis nakreslil jpeg a chces ho pouzit jako pozadi do hry. A pak z toho obrazku chces detekovat kolizi objektu a zjistovat druh objektu. Tak to mas hodne vesele :) Nech uzivatele, ktery ten obrazek udelal, vyznacit, oramovat objekty. Detekce samozrejme jde resit, jak jsem popsal, ale prijde mi to ne tak uplne spolehlive, pokud bude vice obrazku podobnych.
nie nie to je úplne iná vec už :D

táto téma bola na browser hru..príklad http://devana.eu/game/grid.php, ich mapa sa ale generuje z obrázku asi 100x100 kde každý px predstavuje iný obrázok ( voda, pevnina ect..), v mojom prípade som chcel mať týchto typov obrázkov okolo 50..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0