Vedeli by ste mi poradit nejake funkcie, pomocou ktorych by som mohol rozbalit zip subor (s obrazkami) na serveri, jednotlive obrazky zmensit a z thumbu este cast (najlepsie nahodne vybranu) vyrezat ? Stacia mi nazvy funkcii a mozno trosku strucny popis pre lepsie pochopenie ich cinnosti a keby bol aj dlhsi tak sa nenahnevam ;) Ja uz si to potom nejak dam dokopy. Vytvorit zmenseninu obrazka nebude problem. Dolezite je to rozbalenie a vystrihnutie casti.
Dakujem velmi pekne;)
Fórum › PHP
Galeria
So zipmi som veľmi nepracoval. Toto rozbalí celý zip do jedného adresara:
$zip = new ZipArchive;
$res=$zip->open($zipfile);
if ($res === TRUE)
{
$zip->extractTo($path);
$zip->close();
}
Potrebuješ, aby php podporovalo zip, viac na http://www.php.net/zip
Práca s obrázkami sa už rozoberala aspoň 1000 krát, pozri potom na:
http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=6082-problem-s-funkci-imagecopyresampled-#49451
v skratke asi takto:
$img_o = imagecreatefromjpeg( './obrazok.jpg' ); // nacita existujuci obrazok
list($o_w, $o_h) = getimagesize('subor.jpg'); // zistis rozmery obrazka
$img_t = imagecreatetruecolor( $t_w, $t_h); // vytvori novy obrazok (thumb)
imagecopyresampled($img_t, $img_o, 0, 0, 0, 0, $t_w, $t_h, $o_w, $o_h);
// alebo imagecopyresized(...) - ..resampled je kvalitnejšie, pomalšie
// prekopiruje a zmení veľkosť (fcia resample) časť obrazka obr_o do obr_t
imagejpeg ( $img_t , 'thumb.jpg' );
// uloží obrázok (pri použití bez 2 parametra zapíše obrázok na štandardný výstup)
Potrebuješ na to v php GD knižnicu, viac na http://www.php.net/manual/ref.image.php
http://www.php.net/imagecreatetruecolor
http://www.php.net/imagecopyresampled
http://www.php.net/imagecopyresized
http://www.php.net/imagejpeg
kdyz je rozbalis, tak budou v nejakem adresari, pro cteni adresare pouzij scandir(http://cz2.php.net/manual/en/function.scandir.php, jen pro php 5!), nebo kombinaci opendir a readdir(http://cz.php.net/manual/en/function.readdir.php).
zatial mi to funguje vsetko krasne.. len neviem presne ako z thumbu este vyrezat cast.. dajme tomu ze som dal vytvorit thum s pevnou sirkou 180px => vytvoril sa mi obrazok 180px x 120px a ja z neho chcem vyrezat (nie zmensit) cast 112px x 80px a najlepsie aby sa ten vyrez umiestnil niekde nahodne... nie som si isty, ale zda sa mi, ze by to islo cez imagecopyresampled pomocou parametrov $dst_x, $dst_y, $src_x, $src_y
toto je zatial moj zjednoduseny kod:
<?php
$zipfile = "./tmp/test.zip";
$path = "./tmp/test/";
//Rozbalovanie suboru ZIP
$zip = new ZipArchive;
$res=$zip->open($zipfile);
if ($res === TRUE){
$zip->extractTo($path);
$zip->close();
}
//Funkcia na zmensenie obrazka
function createThumb($newwidth, $thumbtype, $dst_x, $dst_y, $src_x, $src_y){
global $path, $file, $src;
list($width,$height)=getimagesize($path.$file);
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,$dst_x,$dst_y,$src_x,$src_y,$newwidth,$newheight,$width,$height);
if($thumbtype == 1){
$filename = "./tmp/images/".$file;
}
else if($thumbtype == 0){
$filename = "./tmp/images/thumbs/".$file;
}
imagejpeg($tmp,$filename,100);
imagedestroy($tmp);
}
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file !="Thumbs.db") {
$src = imagecreatefromjpeg($path.$file);
createThumb(112,0,0,0,112,80);
createThumb(480,1,0,0,0,0);
imagedestroy($src);
echo "$file\n";
}
}
closedir($handle);
}
?>
narazil som na dalsi problem:
Ako som uz povedal chystam sa rozbalovat a zmensovat vacsie baliky fotiek, ktore mozu obsahovat aj niekolko 100 MB dat a pri rozbalovani takehoto balika mi vypisalo: Maximum execution time of 30 seconds exceeded
Nasiel som riesenie pre moj localhost pouzitim fcie set_time_limit(0), ale problem je zase v tom, ze nefunguje pri zapnutom safe_mode a na mojom hostingu zapnuty je. V tychto veciach ohladom nastaveni servera sa moc nevyznam, tak by som potreboval pomoct s riesenim, ktore by vsak nijak neohrozilo "bezpecnost" servera.
Teda ak by nebolo mozne ziadne ine riesenie chcel by som vediet co obnasa vypnutie safe_mode => ci by sa vyskytli nejake nove problemy, bezpecnost a podobne..
Dakujem
To mORb : http://cz.php.net/features.safe-mode
bezpečnost to neohrozí pokud budou všechny skripty bezpečně napsané. (i když, takovej glob()...http://www.soom.cz/index.php?name=articles/show&aid=393).Spíš se používá k zakázání nebezpečných funkcí jako system(), exec apod.
A na tom hostingu by ti poskytovatel ten safe-mode vypnul jen tak?
To Phoenix : No to prave neviem, ci budu ochotni ho vypnut (ale skor myslim, ze nie), tak preto sa snazim najst ine riesenie ako to urobit. Len zatial som na nic neprisiel :)
Prinajhorsom budem ten moj skript pouzivat na svojom localhoste a na server to potom cele premiestnim cez FTP.. chcel som si to tymto ale pekne zjednodusit..
Raz dávno som potreboval mať na free hostingu stále spustený script, tak som vymyslel taký refreshovací scriptík.
Môžeš to skúsiť:
každý uploadovaný zip sa uloží (nerozbalený) do nejakého adresára (napr. /_buffer/)
Potom si urobíš script, ktorý bude robiť nasledovné:
Vyberie prvý zip z /_buffer/ (napr podľa dátumu), a bude z neho postupne vyťahovať obrázky a spracuvávať ich. ( po jednom rozbaliť, odstrániť zo zipu, vytvoriť thumb,...). Ak už neostanú žiadne obrázky, tak zip vymaže. Teraz ak dôjde k timeoutu, tak čo stihne - stihne, čo nestihne = dorobí pri ďalšom spustení. Ak tento script budeš volať stále dokola, stále bude pokračovať, až nakoniec v bufferi nezostanú žiadne zipy.
Aby si nemusel ručne stláčať refresh, tak si tam pridaj nejaký javascript.
Náčrt:
<html><head>
...
<title>Spracúvam obrázky...</title>
<script type="text/javascript">
window.onload = window.location.reload();
</script>
</head><body><?php
flush(); // odošle broweru už vygenerovaný kód
$hotovo = false;
1. vyber jeden zip archiv, alebo
ak uz niesu ziadne zipy, tak $hotovo = true
2. postupne z neho spracuvaj obrazky...
alebo, ak v nom uz nieje ziaden obrazok,
tak zip subor vymaz a opakuj bod 1.
if ($hotovo): ?><script type="text/javascript">
window.onload = function()
{
alert('hotovo!');
}
</script><?php endif;
?></body></html>
To Prog. : Problem je aj v tom ze na serveri nie je podporovana zip kniznica ale poskytli mi len nejaku externu a vobec netusim co ta kniznica dokaze. Na druhej strane sa skusim poobzerat po inych webhostingoch, kedze u terajsieho mi kazdu chvilu domena expiruje..
Mohli by ste mi nejaky odporucit :)
Momentalne mam svoje stranky umiestnene tu: http://www.superwebhosting.sk/web/main.php | program Maximum Linux
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Galéria — založil MI@SO
C# photo galéria — založil lukyno010
Jednoduchá Foto Galéria — založil Tocimanko
Galeria: verticalne a horizontalne zarovnanie obrazku + tien — založil Navodar
Moderátoři diskuze