Zmenšení obrázku – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zmenšení obrázku – PHP – Fórum – Programujte.comZmenšení obrázku – PHP – Fórum – Programujte.com

 

21. 2. 2006   #1
-
0
-

Potřebuji z obrázku,který je uložen v databázi MySQL vytvořit náhled. V referenci jsem si našel, že se to dělá pomocí imagecopyresized, ale ta potřebuje jako vstup obrázek, který vytvořím pomocí funkce imagecreatefromjpeg. Ale ta potřebuje jako parametr platný file stream. A ten nevím jak z toho výstupu z databáze vytvořit. Zkoušel jsem třeba FOpen($zaznam['obrazek'],"r"], ale to nejde.

Díky za help.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tomáš Bobek
~ Redaktor
+2
Posthunter
22. 2. 2006   #2
-
0
-

No asi by to šlo jen změněním výšky a šířky obrázku v tagu 'img' a nebo ten náhled udělat tak, že si v graf. programu obrázek zmenín a potom pomocí javascriptu a php ho můžes ve skutečné velikosti zobrazovat v sam. okně a ne v samostatné stránce...

Nahlásit jako SPAM
IP: ...–
22. 2. 2006   #3
-
0
-

Obe moznosti samozrejme vim, ale to mi nepomuze. To prvni reseni je pekne kdyz obrazek bude jeden, ale kdyz tech nahledu bude 50 a kazdy obrazek se bude tahat v plne velikosti, tak z toho uzivatel vyroste. A ta druha - to je to cemu chci predejit - aby uzivatel musel vkladat dva obrazky.

Jedine co me napada je to cele zapsat do docasneho souboru a pak to znova otevrit. Ale me se do toho nechce :nn:

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tomáš Bobek
~ Redaktor
+2
Posthunter
23. 2. 2006   #4
-
0
-

Jak pades?t? Nap??e? jeden obecnej JavaScript pro otev?en? obr?zku v okn? po kliknut? na jeho n?hled a pomoc? PHP to p?i?ad?? od jednoho (zm?n?n? hodnoty v tagu img) k druh?mu(obr?zek ve skute?n? velikosti)...

Nahlásit jako SPAM
IP: ...–
23. 2. 2006   #5
-
0
-

Ne, tys to asi nepochopil. V databazi bude ulozen obrazek dejme tomu 640*480, ktery se bude v plne velikosti zobrazovat jen na strance veci, kterou ma ten obrazek reprezentovat. A v prehledu tech veci se budou zobrazovat nahledy treba 100*75. Aby to melo smysl, tak se musi velikost obrazku zmenit jiz na serveru, jinak by je uzivatel musel vsechny stahovat k sobe na pocitac a tam bi je prohlizec jiz zobrazil jako 100*75.

BTW, uz se mi to povedlo zprovoznit. Jen ten kod trochu zacistim a hodim to do Skriptu :)

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Petr0
Duch
23. 2. 2006   #6
-
0
-

Tak?e u? to nepot?ebuje?? Jestli jo tak mi napi? na besir@centrum.cz . Sice neviom jak na to, ale mam skript ze kter?ho bys to moch vy??st. Ne e-mail ??dnej spam pros?m!

Nahlásit jako SPAM
IP: ...–
23. 2. 2006   #7
-
0
-

Uz to je hotovy a implementovany do projektu ;)

Tim zacistenim jsem myslel smazani zbytecnych prikazu, okomentarovani a vlozeni prikazu jako fclose()

Do Skriptu to dam upravenou verzi oprostenou od veci specifickych pro muj eshop.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
24. 2. 2006   #8
-
0
-

CommanderZ napsal:

Uz to je hotovy a implementovany do projektu ;)

Tim zacistenim jsem myslel smazani zbytecnych prikazu, okomentarovani a vlozeni prikazu jako fclose()

Do Skriptu to dam upravenou verzi oprostenou od veci specifickych pro muj eshop.


Cus, muzes mi pls ten kod poslat na email neco podobneho nemam a nechce se mi to psat.

Nahlásit jako SPAM
IP: ...–
Jak jsem řekl, tak jest.
24. 2. 2006   #9
-
0
-

http://scripty.programujte.com/viewtopic.php?p=122#122 :ok:

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tomáš Vinduška0
Návštěvník
24. 2. 2006   #10
-
0
-

Díky.

Nahlásit jako SPAM
IP: ...–
Jak jsem řekl, tak jest.
Ota0
Newbie
25. 4. 2006   #11
-
0
-

Můžete ten script hodit ještě jednou? Tady už nefachá:(

Nahlásit jako SPAM
IP: ...–
25. 4. 2006   #12
-
0
-

Hah, pri tech presunech zmizel nekde v eteru. ted bohuzel nemam cas na to abych ten kod znova zacistil, okomentaroval a vubec upravil pro prezenttovani na webu, takze tady je



az budu mit cas, tak ho zase hodim upraveny do skrptu.

 <?php


//bezpecnostni rezim
$rezim=0;

//includy
include "func_pripojeni.php";
include "func_login.php";
include "konfigurace.php";

//nacteni GET parametru
$id = @$_GET["id"];
$v = @$_GET["v"];
$x = @$_GET["x"];
$y = @$_GET["y"];

//v je nepovinne, kdyz neni, tak ho vytvorime
if (!IsSet($v)) $v="0";

//vyzvedne z databaze udaje o obrazku
$dotaz="SELECT * FROM zbozi WHERE ID=$id";
$odpoved=@mysql_query($dotaz) or die ("<font color=red><b>Selh?n? spolupr?ce s datab?z?</b></font><br>");

while ($zaznam=MySQL_Fetch_Array($odpoved))
{

//nacte data z databaze
$typ=$zaznam["obrazek_typ"];
$velikost=$zaznam["obrazek_vel"];
$obrazek_nazev=$zaznam["obrazek_nazev"];

//odesle patricne hlavicky
header("Content-type: $typ");
header("Content-length: $velikost");
//header("Content-Disposition: attachement; filename=$obrazek_nazev");
header("Content-Description: PHP Generated Data");

if($v==1)

{
//vygeneruje docasne jemno souboru
$tmpjmeno = tempnam("", "tmp_obrazek");

//zmeni priponu docasneho souboru
$tmpjmeno=substr($tmpjmeno,strlen($tmpjmeno)-3,3)."jpg";

//vytvori docasny soubor
$tmp=FOpen($tmpjmeno,"w");

//zapise obrazek do docasneho souboru
fputs($tmp,$zaznam["obrazek"]);

// zasle informaci, ze se jedna o obrazek
header('Content-type: image/jpeg');

//nahraje obrazek
$obr2=imagecreatefromjpeg($tmpjmeno);

//zjisti vysku a sirku a dosadi do promennych
list($sirka, $vyska) = getimagesize($tmpjmeno);

//ulozi opriginalni vysku a sirku
$sirkao=$sirka;
$vyskao=$vyska;

//urci aspect ratio
$sirkam = $zobrazeni_eshop_nahled_x / $sirka;
$vyskam = $zobrazeni_eshop_nahled_y / $vyska;


//urci rozmery obrazku
if($vyskam>1) $vyskam=1;
if($sirkam>1) $sirkam=1;

if($vyskam>$sirkam)
{
$sirka=$sirka*$sirkam;
$vyska=$vyska*$sirkam;
}
else if($vyskam<$sirkam)
{
$sirka=$sirka*$vyskam;
$vyska=$vyska*$vyskam;
}
if($vyskam==$sirkam)
{
$sirka=$sirka*$sirkam;
$vyska=$vyska*$sirkam;
}

//zaokrouhli velikost na cele pixely
$sirka = round($sirka);
$img_new_h = round($sirka);

// vytvori obrazek pro nahled
$thumb = imagecreatetruecolor($sirka, $vyska);

//Zzmensi a nakpiruje do nahledu
imagecopyresized($thumb, $obr2, 0, 0, 0, 0, $sirka, $vyska, $sirkao, $vyskao);

//zavre a smaze docasny soubor
fclose($tmp);
unlink($tmpjmeno);

//vypise obrazek na standartni vystup
print imagejpeg($thumb);

}
if(IsSet($x)&&IsSet($y))
{
//vygeneruje docasne jemno souboru
$tmpjmeno = tempnam("", "tmp_obrazek");

//zmeni priponu docasneho souboru
$tmpjmeno=substr($tmpjmeno,strlen($tmpjmeno)-3,3)."jpg";

//vytvori docasny soubor
$tmp=FOpen($tmpjmeno,"w");

//zapise obrazek do docasneho souboru
fputs($tmp,$zaznam["obrazek"]);

// zasle informaci, ze se jedna o obrazek
header('Content-type: image/jpeg');

//nahraje obrazek
$obr2=imagecreatefromjpeg($tmpjmeno);

//zjisti vysku a sirku a dosadi do promennych
list($sirka, $vyska) = getimagesize($tmpjmeno);

//ulozi opriginalni vysku a sirku
$sirkao=$sirka;
$vyskao=$vyska;

//urci aspect ratio
$sirkam = $x / $sirka;
$vyskam = $y / $vyska;


//urci rozmery obrazku
if($vyskam>1) $vyskam=1;
if($sirkam>1) $sirkam=1;

if($vyskam>$sirkam)
{
$sirka=$sirka*$sirkam;
$vyska=$vyska*$sirkam;
}
else if($vyskam<$sirkam)
{
$sirka=$sirka*$vyskam;
$vyska=$vyska*$vyskam;
}
if($vyskam==$sirkam)
{
$sirka=$sirka*$sirkam;
$vyska=$vyska*$sirkam;
}

//zaokrouhli velikost na cele pixely
$sirka = round($sirka);
$img_new_h = round($sirka);

// vytvori obrazek pro nahled
$thumb = imagecreatetruecolor($sirka, $vyska);

//Zzmensi a nakpiruje do nahledu
imagecopyresized($thumb, $obr2, 0, 0, 0, 0, $sirka, $vyska, $sirkao, $vyskao);

//zavre a smaze docasny soubor
fclose($tmp);
unlink($tmpjmeno);

//vypise obrazek na standartni vystup
print imagejpeg($thumb);

}
else
{
print $zaznam["obrazek"];
}
}while(false);


?>

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
25. 4. 2006   #13
-
0
-

Prosím, můžete mi objasnit jazykovou konstrukci:



while(podminka){
...
}while(false);

Jestli tomu dobře rozumím, tak se tím docílí vykonání bloku za while(podminka) jen jednou?

Nahlásit jako SPAM
IP: ...–
25. 4. 2006   #14
-
0
-

Spravny postreh. Ta konstrukce je tam, jelikoz fetch array se pouziva vetsinou prave v cyklu, protoze vetsinou hrozi ze by vysledku mohlo byt vic. To ovsem neni tento pripad (obrazky jsou volany pod jednoznacnym ID). V tomto pripade by tam opravdu vubec byt nemusela.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
dalaman0
Věrný člen
28. 8. 2006   #15
-
0
-

az budu mit cas, tak ho zase hodim upraveny do skrptu.



A nasiel si si ? :D
POtreboval by som podobny skript, lenze obrazky netaham z databaza ale z nbormalneho priecinka na serveri.

Nahlásit jako SPAM
IP: ...–
Lepšie je mať psa na saláme ako salámu pod psom !!!
28. 8. 2006   #16
-
0
-

na tohle primo ne, ale pracuju na univerzalni tride pro praci s obrazky, hodim tam to co zatim mam - snad jedine co mi chybi je prikaz pro upraveni obrazku, to mozna stihnu udelat jeste dneska vecer.

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
MaCizek
~ Anonymní uživatel
1 příspěvek
4. 12. 2008   #17
-
0
-

Moc děkuji za to zmenšování obrázků moc mi to pomohlo a chtěl bych se zeptat jestli někdo nevý jak po tom zmenšení obrázku ještě obrázek oříznout, aby se například obrázky na výšku na náhledu ořízli ty horní okraje tak aby se zobrazil obrázek na šířku

Nahlásit jako SPAM
IP: 79.98.72.–
joe
~ Anonymní uživatel
62 příspěvků
5. 12. 2008   #18
-
0
-

napsal:
Plz, muzete mi objasnit jazykovou konstrukci:



while(podminka){
...
}while(false);
Jestli tomu dobre rozumim, tak se tim docili vykonani bloku za while(podminka) jen jednou?



Ne, celé je to samozřejmě nesmysl. To co je tam ve skutečnosti napsáno je toto:


while (podminka) {
...
}
while (false)
;
Takže to není jedna konstrukce, ale dvakrát normální while, přičemž ten druhý je zbytečný, nesmyslný a nic nedělá. A autor by si měl zopakovat základy jazyka :smile1:

Nahlásit jako SPAM
IP: 213.211.51.–
joe
~ Anonymní uživatel
62 příspěvků
5. 12. 2008   #19
-
0
-

To Matej Zabsky : To jako generuješ ten náhled při každém přístupu? Co takhle si ho vždycky uložit a při dalších požadavcích na už generovaný náhled použít ten uložený místo nového generování? Takhle to dělají velcí kluci, aby jim server nevybouchl ;)

Nahlásit jako SPAM
IP: 213.211.51.–
6. 12. 2008   #20
-
0
-

joe napsal:
To Matej Zabsky : To jako generuješ ten náhled při každém přístupu? Co takhle si ho vždycky uložit a při dalších požadavcích na už generovaný náhled použít ten uložený místo nového generování? Takhle to dělají velcí kluci, aby jim server nevybouchl ;)



Sorry, uz to jsou dva roky, naprosto si nepamatuju, ze jsem kdy neco takoveho psal .)

Ale rozhodne delat nahledy pri kazdem pristupu je naprosta blbost.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Zmenšení obrázku — založil Petr

Funkce na zmenseni obrazku — založil desik

Zmenšení řetězce? — založil DjeFFeCt

 

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