Autor Zpráva
MilanJ
Profil
Důvody proč obrázky v db bych teď nechtěl řešit, prostě nějaké jsou a já chápu, že to má jisté nevýhody, přesto s tím v tuhle chvíli nemůžu nic dělat.

Před uložením obrázku do db potřebuji změnit jeho velikost, ale nevím jak na to.
Pokud ukládám obrázky na disk, není to problém, nenapadá mě ale, jak upravím velikost obrázku, když ho pak chci vložit do db.

Budu rád za každý nápad.
MilanJ
Profil
V podstatě potřebuji vytvořit a uložit 2 verze obrázku - obrázek k prohlížení v určité velikosti (800x600) a pak náhled.
Alphard
Profil
změna rozměrů:
http://php.vrana.cz/zmensovani-obrazku.php
kachnak
Profil *
zdravim prosim vas tato funkcia imagecopyresized ak zmensi obrazok tak je taky "kockaty" hranaty a ked zmensim obrazok v PC pomocou irfanview softu tak je ovela krajsi zaostreny ako ked sa zmensi na servery s atributom kvality 100 ( imagejpeg($thumb,"$meno",100); )... neviete ako spravit aby bol aj ten na servery po zmenseni pekny ako cez soft v pc..
ten na servery po zmenseni zabera ovela viac KB ako ten povodny vacsieho rozslisenia pred uploadom na net.. a i ked zabera viac kb je ovela skaredsi... :(
dakujem
MilanJ
Profil
Alphard
To je přesně ono, díky.;-)
Alphard
Profil
kachnak
ImageCopyResampled
MilanJ
Profil
Tak jsem zkoušel odkaz na návod, který tu nechal Alphard, ale neovládám PHP tak, abych s tím sám pohnul.

Můj script na zapsání obrázku do databázeb vypadá následovně:


foreach($_FILES as $userfile)
{
$file_tmp_name = $userfile['tmp_name'];
$file_name = $userfile['name'];
$file_type = $userfile['type'];

// testování vyplnění pole FILE z formuláře a následně uložení údajů do db
if ($file_name != "")
{
// addslashes - před nebezpečné znaky vloží lomítka, ty se ale nezobrazí ani po uložení do db
// fread( filename, lenght) - binárně bezpečné čtení ze souboru, přečte nejvýše length bytů ze souboru
// fopen ( filename, mode) - přečte soubor filename, 'r' - otevřít pouze pro čtení, nastaví ukazatel na začátek souboru
$userfile = addslashes (fread (fopen ($file_tmp_name, "r"), filesize ($file_tmp_name)));

// Ověříme, zda v poli existuje daná hodnota
if (in_array (strtolower ($file_type), $image_types))
{
$sql = "INSERT INTO image (id, image_type, image, image_name) VALUES ('$id', '$file_type', '$userfile', '$file_name')";
mysql_query ($sql);
}
}
else
{
// obrázek nebyl vložen, nic se nestane
}


Já potřebuji ještě před uložením do db změnit velikost obrázku na 800x600 (pokud je větší) a na velikost 75x56 (náhled) pak oba změněné obrázky uložit do db.

A to se mi právě nedaří. Budu vděčný za každý nápad.
MilanJ
Profil
Žádný nápad?
mila
Profil
Asi bych použil ob fce. Prostě bych zmenšený obrázek vypsal a zachytil výstup do proměné.
Jacker
Profil *
muže se provést zmenšení ještě před samotným uploadem? Asi jsem to dost nepochopil ale mě to pořád vypisuje soubor již existuje přes fci file_exsists
MilanJ
Profil
Jacker
Jestli to chápu správně, pak se nejprve musí dostat soubor na server, aby s ním mohlo PHP pracovat.

Já pořád řeším jak soubor zmenšit a posléze uložit do db.
Snad soubor zmenšit pomocí funkcí imagecreatetruecolor, imagecopyresampled, imagejpeg , zapsat ho na disk a másledně vzít a zapsat do db.
Nebo se dá zapsat rovnou do db?
Jacker
Profil *
Zkoušel jsem to přes uložení do serverového temp, ale nešlo mi to a i kdyby tak servery mohou mít tento tem pomezený, takže se může stát že obrázek se tam nevejde. Ale co je horší, tahle fce mi vůbec nejede prostě vrací hodnotu '' jako prádnou asi mám někde u sebe chybu
Toto téma je uzamčeno. Odpověď nelze zaslat.