« 1 2 3 »
Autor Zpráva
Coompiik
Profil
Dobrý den, chtěl bych se zeptat jestli by nějak šlo udělat že bych někam uploadl opbrázek(třeba jen zelené pozadí nebo prostě něco) pak pomocí věcí za ? by se tam přidávali různý věci např by to bylo obrazek.jpg?nick=Coompiik&name=Milan&vek=12&funkce=admin&popis=Hmmm%20Wafle...%20xDDDD nebo něco podobnýho a pak by ten obrázek vypadal nějak takto:

V levo by byl obrázek z https://minotar.net/avatar/$nick/100.png vedle toho by byly podsebou nastrkaný:
Nick: Coompiik($nick)
Jméno: Milan($name)
Věk: 12($vek)
Funkce: admin(funkce)
Poipis: Hmm Wafle... xDDDD ($popis)

Vým že je to přes php jestli to půjde a vůbec se v tom nevyznám, je to něo lehčího nebo tohle už patří do zakázek?
Předem děkuji za odpově'd
---
Coompiik
Milan Jelínek
Web
Anonymní
Profil *
Jistě že to lze udělat. Ano máš pravdu bude zapotřebí nějaký jazyk běžící na straně serveru(již zmiňovaný PHP, či třeba C#,Javu lze použít..). Nenapíšu ti sem přesný kód ale napíšu ti sem postup, jak bych to řešil já:

1. Vytvořil bych si tabulku v databázi, kde by bylo umístění obrázku(nebo třeba jen celý jméno, za předpokladu že budu všechny obrázky házet do jedné složky), nick,jméno,věk,funkce a třeba popis a hlavně ID, které by bylo unikátní
2. Při uploudu se krom obrázku(který se uloží třeba do složky obr) se udělá i zápis do databáze, kde do kolonky umístěný obrázku vložíš celé jméno obrázku včetně koncovky(takže třeba obrazek.jpg) a ještě tam hodíš zbylé údaje(Nick,jméno, popis atd..)
Zobrazení obrázků:
1. Pomocí GET(takže z odkazu ve tvaru neco.cz/stranka.php?id=1) vytáhnu ID(v tomto případě 1), co jsi psal ty je blbost, protože co když popisek bude delší? Vznikne zbytečně dlouhý odkaz a další nepříjemnosti
2. Udělám dotaz na databázi
3. V případě že dotaz vrátí jeden řádek tak vypíšu údaje, obrázek vykreslím pomocí umístění obrázku, pokud neexistuje tak napíšu třeba "Daný obrázek neexistuje"

Nevím jestli jsem to vysvětlil jasně, ale snad to aspon trochu pomůže. Těžký to rozhodně není, ale chce to mít nějaké minimální zkušenosti se serverovým jazykem a databází
Coompiik
Profil
Anonymní:
Děkuji, vysvětlil sto dokonale, bohužel já nemám ani ty minimální skušenosti s databází ani serverovím jazykem, pouze uživatelský s HTML5, skusim se to našprtat a pak se na tohle znova kouknu. Dk moc
juriad
Profil
Můžeš se trochu inspirovat zde (hlavně to vykreslování obrázku):
PHP Online Status
a navazující:
PHP Online Status Generator [Minecraft]
Coompiik
Profil
juriad:
Děkuji to by se mohlo hodit ale já potřebuju něco jako vyzitku přímo pro hráče, splácám něco v paint.net a pošlu
--

--
Což je v podsatě obrazek.jpg?nick=Coompiik&name=Milan&vek=12&funkce=admin&popis=Hmmm%20Wafle...%20xDD

Moderátor Petr ZZZ: Nepiš prosím tři m za sebou, pokud nemáš důvod volat moderátora.
Amunak
Profil
Coompiik:
Tak to se buď budeš muset naučit programovat (v PHP) a generovat tam obrázky, nebo si napiš do prací a zakázek.
Coompiik
Profil
Amunak:
Dobře, ale jen abych měl přestavu... kolik to tak bude stát? :///
DarkMeni
Profil
Ten kód ti klidně můžu zkusit napsat zadarmo, ale pak bude záležet na tobě jestli to budeš umět použít (sehnat si hosting podporující PHP s rozšířením GD knihovny a dynamicky generovat odkazy)
Akorát když ti to někdo napíše, tak se ale ty z PHP asi nic nenaučíš (ale vypadá to že to ani nemáš v plánu)
Coompiik
Profil
DarkMeni, věř mi, už i pár lidí pár věcí napsalo, a já sem to furt tak dlouho pročítal a zjišťoval co co znamená dokud sem to celý nepochopil, díky topu už umim dost věcí přes include atd. Budu moc rád kdyš mi to napíšeš hosting mám na endoře a ta má PHP a tu knihovnu myslim taky, ještě na to kouknu, Pošlu ti pozadí
DarkMeni
Profil
Jj endora to umí, pozadí si můžeš dát třeba někam na server a poslat odkaz. Ale kouknu se na to až zítra, taky se chci vyspat :D
Coompiik
Profil
DarkMeni:
Ok, každej musí spát xDDD aj já už du, pozadí posílam sem nahoře na začátku je příklad už vytvořenýho
---

Popisek: obrázek je na http://minotar.net/avatar/$nick/100.png
DarkMeni
Profil
Spíš radši pošli jen to pozadí, bez těch linek a výřezu pro avatar.
Coompiik
Profil
DarkMeni:
Ok, tu:
DarkMeni
Profil
Tak vypadá to zatim takto:
Přistupovat k obrázku můžeš třeba jako:
http://www.tvoje-domena.cz/profilovy_obrazek.php?nick=Coompiik
A pak si zjistit ostatní informace
Nebo:
http://www.tvoje-domena.cz/profilovy_obrazek.php?nick=Coompiik&jmeno=Milan&vek=12&funkce=Admin&popis=Hmm... Wafle :D

Příklad: Tu (ale nezustane to tam dlouho)

Budeš potřebovat si někam uložit písma (nebo písmo, pokud nebudeš chtít, aby hodnoty byly vypsaný tučně), ve kterých to budeš chtít nechat vypsat (v ukázce je arial.ttf a arial-bold.ttf)

<?php #profilovy_obrazek.php
//Text na vypsání
$headers = array(
    'Nick',
    'Jméno',
    'Věk',
    'Funkce',
    'Popis'
);
$content = array(
    isset($_GET['nick']) ? $_GET['nick'] : '',
    isset($_GET['jmeno']) ? $_GET['jmeno'] : '',
    isset($_GET['vek']) ? $_GET['vek'] : '',
    isset($_GET['funkce']) ? $_GET['funkce'] : '',
    isset($_GET['popis']) ? $_GET['popis'] : ''
);

//Adresa k avataru
$nick = $content[0];
$avatar_src = 'https:'.'//minotar.net/avatar/'.$nick.'/100.png'; //To divný spojování je tam proto, aby se tu ta adresa nepřevedla na BB kód
$avatar_size = getImageSize($avatar_src);
if(!$avatar_size || $avatar_size[0] != 100){
    $avatar_src = 'avatar.png';
}

//Adresa k pozadí
$background_src = 'background.png';

//Získání šířky a výšky
list($width, $height) = getImageSize($background_src);
list($avatar_width, $avatar_height) = getImageSize($avatar_src);

//Horní odsazení
$y = floor(($height - $avatar_height) / 2);

//Vytvoření zdroje pozadí a avataru (předpokládá se PNG formát)
$background_resource = imageCreateFromPNG($background_src);
$avatar_resource = imageCreateFromPNG($avatar_src);

//Vytvoření zdroje obrázku
$image_resource = imageCreateTrueColor($width, $height);

//Nakopírování pozadí a avataru do zdroje obrázku
imageCopy($image_resource, $background_resource, 0, 0, 0, 0, $width, $height);
imageCopy($image_resource, $avatar_resource, 10, $y, 0, 0, $avatar_width, $avatar_height);

//Alokování barvy do zdroje obrázku
$black_color = imageColorAllocate($image_resource, 0x00, 0x00, 0x00);
$orange_color = imageColorAllocate($image_resource, 0xFF, 0xAA, 0x2B);
$red_color = imageColorAllocate($image_resource, 0xFF, 0x48, 0x2B);
$blue_color = imageColorAllocate($image_resource, 0x00, 0xFF, 0xFF);
$yellow_color = imageColorAllocate($image_resource, 0xFF, 0xFF, 0x00);
$white_color = imageColorAllocate($image_resource, 0xFF, 0xFF, 0xFF);

//Cesta k písmu, velikost písma, úhel
$font = 'fonts/arial.ttf';
$size = 12;
$bold_font = 'fonts/arial-bold.ttf';
$bold_size = 11;
$angle = 0;

//Vypočítání souřadnic pro text
$vertical_tab = 7;
$text_x = $avatar_width + 20;
$text_y = $y + $size + $vertical_tab;

//Nastavení barev pro řádky
$colors = array(
    $blue_color,
    $orange_color,
    $yellow_color,
    $red_color,
    $white_color
);

//Vykreslení linek
/*for($i = 0; $i < count($headers) + 1; $i++){
    $line_y = ($y + 2) + $i * ($size + $vertical_tab);
    imageLine($image_resource, $text_x, $line_y, $width - 5, $line_y, $black_color);
    //imageLine($image_resource, $text_x, $line_y + 1, $width - 5, $line_y + 1, $black_color);
}*/

//Vypsání textu
$x_offset = 0;
for($i = 0; $i < count($headers); $i++){
    $text = $headers[$i].': ';
    $text_width = imageTTFBBox($size, $angle, $font, $text)[2];
    if($x_offset < $text_width){
        $x_offset = $text_width;
    }
    imageTTFText(
        $image_resource,                        //Zdroj obrázku
        $size,                                  //Velikost písma
        $angle,                                 //Úhel náklonu
        $text_x,                                //X souřadnice
        $text_y + $i * ($size + $vertical_tab), //Y souřadnice
        $white_color,                           //Brava
        $font,                                  //Písmo
        $text                                   //Text
    );
}
//Vypsání hodnot
for($i = 0; $i < count($content); $i++){
    $text = $content[$i];
    $color = isset($colors[$i]) ? $colors[$i] : $white_color;
    imageTTFText(
        $image_resource,                        //Zdroj obrázku
        $bold_size,                             //Velikost písma
        $angle,                                 //Úhel náklonu
        $text_x + $x_offset,                    //X souřadnice
        $text_y + $i * ($size + $vertical_tab), //Y souřadnice
        $color,                                 //Brava
        $bold_font,                             //Písmo
        $text                                   //Text    
    );
}

//Odeslání HTTP headeru (řekne prohlížeči že to nebude html stránka, ale PNG obrázek)
header('Content-Type: image/png');

//Vykreslení obrázku v PNG formátu
imagePNG($image_resource);

//Uvolnění paměti s obrázkem
imageDestroy($image_resource);
imageDestroy($avatar_resource);
imageDestroy($background_resource);
?>

U všech obrázků (pozadí a avataru) se předpokládá že sou v png formátu
Amunak
Profil
DarkMeni:
nebylo by vhodnější místo vševědoucího parametru data použít standardní přístup a předávat parametry tradičně v jednotlivých parametrech? (tedy :jmeno=Milan&vek=12&...)

Už proto, že tohle vypadá jako jakýsi požadavek o API. Můžeš pak použít obyčejný formulář pro použití takového skriptu, a nemusíš řešit jak všechno nacpat do jedné proměnné oddělené čárkou (a navíc ti to umožní používat čárku v popisu). Taky by to pak nedovolilo "zneužít" generátoru pro generování vlastního textu. Jo a nefunguje ti tam korektně čeština.
DarkMeni
Profil
Amunak:
Asi bylo, spíš to byl je příklad, že to de udělat i přes hezký adresy, jinak mi připadá že nejlepší bude zjistit jen nick - adresa pak bude kratší a zbytek pude zjistit odjinud, třeba z databáze

A jo, tu češtinu to bude chtít nějak opravit
Coompiik
Profil
DarkMeni:
Díííííík moc, ale přes to Nick: Coompiik asi nepujde tenhle formulář co už sem si připravil co?
http://coompiik.jecool.net/prukaz.php
Jo a ty avataři, ty sou uploadovaný na tom minotaru, de to nejak zmenit? Promin te sem tak nevdecnej nebo jak to mam nazvat jenže já se v tom opravdu vyznám až potom co si všechno pročtu...
DarkMeni
Profil
No, to je jak říkal Amunak, nějak mi nedošlo že to asi budeš dělat přes formulář :D
Trochu sem ten kód upravil
Jinak jak to myslíš s těmi avatary? V tom formuláři sem neviděl možnost nahrání obrázku
Coompiik
Profil
https://minotar.net/avatar/Computer_CZ/100.png tady najdeš avatary všech hráčů co maj i nemaj skin, já skin na účtu Coompiik nemam takže kdyš to bude https://minotar.net/avatar/Coompiik/100.png bude to rovnou mít obrázek steva co se usmívá.


Jo koukl sem se nato, dal sem to do souboru prukaz-generated.php upravil sem kde se nachazi pozadi a skusil tuhle adresu:
http://coompiik.jecool.net/prukaz-generated.php/Nick:%20Coompiik,%20Jm%C3%A9no:%20Milan,%20V%C4%9Bk:%2012,%20Funkce:%20Admin,%20Popis:%20Hmm...%20Wafle%20:D

Ukazala se tam tamta ikonka jako obrazek nenalezen nebo tak
DarkMeni
Profil
Aha, takže buď si ty avatary, který chceš použít stáhneš k sobě na server (jestli je to od minotaru dovolený) a nebo k nim budeš přistupovat přes absolutní adresu (http://...), ale nevim jestli to funkce imageCreateFromPNG umí.
Jestli to chápu dobře, tak tam chceš dát avatar podle vybraný funkce? To bude asi trochu složitější (buď přes podmínky, nebo si ty avatary stáhneš k sobě a pojmenuješ je jako hodnoty funkcí, takže třeba: Hráč.png, Šťasný Hráč.png, Smutný Hráč.png, Zabanovaný Hráč.png..., ale nevim jak si s tim poradí souborový system)

Jakou verzi kódu si tam dal? Před chvílí sem to upravoval, tak to kdyžtak zkus přepsat a přistupuj k tomu jak si původně chtěl, takže:
http://www.tvoje-domena.cz/profilovy_obrazek.php?nick=Coompiik&jmeno=Milan&vek=12&funkce=Admin&popis=Hmm... Wafle :D
Coompiik
Profil
DarkMeni:
Avatar podle nicku, každý mc nick má svého avatara a kdyš nemá což mají warezáci a noobové tak je tam obrázek steeva.
Ohledně toho kódu vůbec to nejde, bílá stránka, nic, moje domana je coompiik.jecool.net a nahrávám ty phpčka do prukaz-generated.php (http://coompiik.jecool.net/prukaz-generated.php)
DarkMeni
Profil
Jo aha, tak to jo, to pude udělat
Co všechno máš v prukaz-generated.php, nevkládáš do toho nějaký další skripty?
Předtim co sem koukal tak to místo obrázku poslalo:
<head>
<meta charset="windows-1250">
<title>Coompiikuv Web</title>
<link rel="shortcut icon" href="http://www.coompiik.jecool.net/wp-content/themes/brightpage/favicon.ico" />
</head>
<body>
A proto ti prohlížeč řek že je obrázek rozbitej.
Coompiik
Profil
DarkMeni
Takže mam smazat body atd?
DarkMeni
Profil
Jak se ti tam dostalo <body>? :D
Vytvoř si soubor třeba "profilovy_obrazek.php" nebo si ho pojmenuj jak chceš, ale dej tam koncovku php
Vlož do něj obsah kódu co je v [#14] DarkMeni, nic víc
Vyber si nějaký font, ve kterým to budeš chtít mít vykreslený (třeba Arial má doprou podporu českých znaků, nebo Lucida Sans)
Někam na serveru si ho nahraj
Pak změň cestu k fontu v kódu ze [#14]
A soubor "profilovy_obrazek.php" můžeš zavolat jako obrázek s parametry nick, jmeno, vek, funkce a popis
Takže třeba takto
Coompiik
Profil
Udelal sem to presne, fonty sem hodil do slosky fonts nastavil sem tam arial a hodil sem tam jen kód ze #14 ale zase bílá stránka :/
DarkMeni
Profil
Jak tu adresu zadáváš?
Amunak
Profil
DarkMeni:
Vždyť to můžeš s hezkýma adresama taky, jen ten rewrite bude vypadat jinak.

Obrázky se z minotaru načítají přes adresu https://minotar.net/avatar/<nick>/100.png (příklad). S povoleným fopen() jde načítat i vzdálené URL přímo do imagecreatefrompng().

Jinak v tom skriptu bys především měl ošetřovat, jestli ti nějaké ty obrázkové funkce (a hlavně třeba tohle načtení ze vzdáleného serveru) nehážou chyby. Jinak se error vypíše do výstupu a generování obrázku selže.

Coompiik:
Bylo by fajn, kdyby sis tu hru koupil...
Coompiik
Profil
DarkMeni:
tak jak si mi napsal v tom takto


Amunak:
Hmm, to jo, jenže si to nemůžu dovolit, ale tak za 2, 3 mesice si to dystak koupim
DarkMeni
Profil
Amunak:
Jak to mysliš s tim ošetřováním chyb? Když nějaká z těch obrázkových funkcí vyhodí chybu, tak asi neudělala to, co se po ní chtělo, a pak ani potlačení tý chyby přes @ nepomůže a generování selže tak jako tak. Ale u tý imageCreateFromPNG máš pravu, když někdo zadá blbě nick a minotar žádnej obrázek nevrátí, tak to pak pude třeba ještě přesměrovat na obrázek s textem že avatar nebyl nalezenej nebo tak něco
Anonymní
Profil *
Coompiik:
Můžu se zeptat co tohle má za smysl? Proč se to musí házet do obrázku? Když je to naprostá kravina, ten skript je hrozně pomalý, pokud chcete dělat podobné p*čovinky tak si raději zvolte něco jako ASP.NET či JSP, což je pro podobné kraviny "více tolerantní" protože je několikanásobně rychlejší. Nebylo by mnohem jednodušší to prostě třeba naházet do tabulky? Další věc, takhle může ze sebe udělat admina téměř každý, kdo si umí upravit argument v GET. Jediné rozumné využití tohoto skriptu je nějaký "generátor" obrázků - prostě člověk si zadá údaje a vytvoří se mu obrázek a pak si ho následně stáhne do počítače a vloží třeba na fórum jako nějaký podpis(pokud toto chceš, tak to máš hotové).

Pokud to chceš využít jako nějaký online status(o což se už tady pár lidí snažilo), tak je to nepoužitelné, už jenom z důvodu, že je to pomalé a druhý důvod, že stejnak nějaký status budeš vytahovat z databáze => přepsat minimálně 1/6 zdrojáku co ti DarkMeni v dobré vůli poslal

Možná bych si ujasnil k čemu to vlastně potřebuješ. Nechci rýpat ani jsem nechtěl reagovat, ale když jsem to viděl tak jsem se zděsil.
« 1 2 3 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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