| Autor | Správa |
tatysp
 Užívateľ
 Založený: 01.09.2007 Príspevky: 141 Bydlisko: 127.0.0.1
 | Zaslal: Po 07.01.08 14:55 |   |
Ako sa dá cez PHP zmenšiť veľkosť (rozmerov v px) obrázku ? Viem že sa to nejako dá, len neviem ako - chcel by som vytvoriť skript, ktorý by pri upload-e nahral obrázok ako napr xyz.jpg a hneď by z toho súboru vygeneroval zmenšeninu a tu uložil ako xyz_small.jpg. Raz som to videl v nejakej galérií, len už neviem jej názov. Nevie niekto ako sa to dá ? Pravdepodobne to bude chcieť nejakú knižnicu, tak potom tu hoďte aj jej názov  |
| |
        |
 |
p360t
 Skúsený užívateľ
 Založený: 30.05.2006 Príspevky: 1775 Bydlisko: BA - EASTSIDE
 | Zaslal: Po 07.01.08 15:35 |   |
Knižnica GD (alebo GD2), http://sk.php.net/manual/sk/ref.image.php |
_________________ [quote="A. S. Tanenbaum"]The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.[/quote] | |
    |
 |
tatysp
 Užívateľ
 Založený: 01.09.2007 Príspevky: 141 Bydlisko: 127.0.0.1
 | Zaslal: Po 07.01.08 15:44 |   |
a čo tak dať tu presnú funkciu a jej popis ? nie každý vie po ang tak dobre  |
_________________ It easier to run away | |
        |
 |
suchy
 Čestný člen
 Založený: 17.10.2006 Príspevky: 1770
 | Zaslal: Po 07.01.08 16:15 |   |
no tych funkcii je tam viac. inak myslim, ze nazvy funkcii su celkom vystizne, takze to pochopi aj clovek so slabsou anglictinou. |
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. | |
     |
 |
tatysp
 Užívateľ
 Založený: 01.09.2007 Príspevky: 141 Bydlisko: 127.0.0.1
 | Zaslal: Po 07.01.08 16:23 |   |
hmm ale mne sa moc nechce prechádzať tým zoznamom  |
_________________ It easier to run away | |
        |
 |
tatysp
 Užívateľ
 Založený: 01.09.2007 Príspevky: 141 Bydlisko: 127.0.0.1
 | Zaslal: Po 07.01.08 16:34 |   |
|
        |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Po 07.01.08 17:04 |   |
hodim sem v bodoch postup a len funkcie k tomu
1.najprv si musis nacitat samotny obrazok kt. ces spracovat:
| kód: | ImageCreateFromGif
ImageCreateFromJpeg
ImageCreateFromPng |
2. potom z neho vyberes sirku a vysku
3. ziskane velkosti spracujes na mensie(matematicke ukony)
4. nastavis platno
5. nastavis farby pozadia
6. vyplnis platno farbou
7. spracujes samotny obrazok
8. ulozis obrazok
| kód: | imagejpeg
imagegif
imagepng |
9. vymazes obrazok z pameti
samozrejme ze toto je len pre jeden obrazok
ked chces ulozit vecsi bez uprav staci len move_uploaded_file, alebo pokial chces spracovat aj mensi aj vecsi treba kazdu funckiu dat 2x pre kazdy
tento navod je len to najjednoduhsie a niektore fukcie sa daju zapisat aj inymi funkciami |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
chiwo
 Užívateľ
 Založený: 14.06.2007 Príspevky: 72
 | Zaslal: Po 07.01.08 20:07 |   |
| qacer napísal: | hodim sem v bodoch postup a len funkcie k tomu
1.najprv si musis nacitat samotny obrazok kt. ces spracovat:
| kód: | ImageCreateFromGif
ImageCreateFromJpeg
ImageCreateFromPng |
2. potom z neho vyberes sirku a vysku
3. ziskane velkosti spracujes na mensie(matematicke ukony)
4. nastavis platno
5. nastavis farby pozadia
6. vyplnis platno farbou
7. spracujes samotny obrazok
8. ulozis obrazok
| kód: | imagejpeg
imagegif
imagepng |
9. vymazes obrazok z pameti
samozrejme ze toto je len pre jeden obrazok
ked chces ulozit vecsi bez uprav staci len move_uploaded_file, alebo pokial chces spracovat aj mensi aj vecsi treba kazdu funckiu dat 2x pre kazdy
tento navod je len to najjednoduhsie a niektore fukcie sa daju zapisat aj inymi funkciami |
pekna praca aj ja to asi vyuzijem casom diky aj za mna |
| |
   |
 |
bruno.b
 Užívateľ
 Založený: 24.02.2007 Príspevky: 146 Bydlisko: Martin
 | Zaslal: Po 07.01.08 22:01 |   |
na zmensenie obr. tolko krokov? wow ) |
| |
     |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Po 07.01.08 22:58 |   |
jj...ja skript kt. vyuzivam bez vsetkych zbytocnosti ma 130 riadkov(som sa s nim sral asi 2 dni kym som prisiel na spravnu kombinaciu ) a najdlhsi je bod 3: urcenie velkosti pomocou matematickych prikazov
ale v tom skripte mam pevne definovanu sirku aj vysku mensieho obrazku, vytvorim platno o tej velkosti a zmenseny obrazok vkladam do neho v spravnom pomere do stredu a zvysok vyplnim nejakou farbou
Da sa to robit aj ze vytvori zmenseny obrazok priamo so spravnymi pomermi stran, ale to sa nehodi pri fotogaleriach, kde by mali byt zmenseniny v rovnakej velkosti a po kliknuti sa zobrazi velky obrazok (tak pouzivam ten prvy postup)  |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
neopagan
 Užívateľ
 Založený: 07.08.2006 Príspevky: 681
 | Zaslal: Ut 08.01.08 13:24 |   |
Ja to mam riesene takto: | kód: | $KamUlozit = "obrazky/$subor; //cesta, kam zmenseny subor ulozit
$NovaSirka = 65; //maximalna sirka zmenseneho obrazku
$NovaVyska = 60; //maximalna vyska zmenseneho obrazku
{ //zistime povodnu velkost obrazku
list($sirka, $vyska) = getimagesize($subor);
$image_p = imagecreatetruecolor($NovaSirka, $NovaVyska);
//otvorenie povodneho obrazku zo suboru
$image = imagecreatefromjpeg($subor);
//okopirujeme zmenseny obrazok do povodneho
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NovaSirka, $NovaVyska, $sirka, $vyska);
//a ulozime
imagejpeg($image_p, $KamUlozit, 70); //to cislo 70 urcuje kvalitu, v akej sa ma obrazok ulozit
} |
Cize z velkeho obrazku ti spravi miniaturu, ktoru ti ulozi do adresara na serveri a stadial to uz zobrazis | kód: | | <img src="<?echo $KamUlozit;?>" |
Mne zmensuje obrazok ktory vkladam do databazy, ale tu som to trochu prerobil, aby si nemusel pouzivat MySQL. Vid priklad vyuzitia tohto scriptu na www.metalcovers.ic.cz Hned na uvodnej stranke tie 3 miniatury. |
| |
  |
 |
p360t
 Skúsený užívateľ
 Založený: 30.05.2006 Príspevky: 1775 Bydlisko: BA - EASTSIDE
 | Zaslal: Ut 08.01.08 14:54 |   |
| citácia: | hmm ale mne sa moc nechce prechádzať tým zoznamom  |
Hmmmmm, ale mne sa moc nechce ti radiť
Aké z toho plynie ponaučenie? Nabudúce budeš usilovnejší (lebo ti už fakt neporadím a poviem adminovi nech ťa vyhodí ).
Môj kód:
| kód: |
// --------- ULOZIME ARCHIV
if ($_FILES['f_zip']['name'] == '') {
exit();
}
$file = my_jpg_image_name($_FILES['f_zip']['name']);
$ciel="../pic_temp/".$file;
move_uploaded_file($_FILES['f_zip']['tmp_name'], $ciel) or die ("Smrt kapitalizmu! (subor sa nepodarilo ulozit na server)");
// vytvor zmenseninu
// Get new dimensions
list($width, $height) = getimagesize($ciel);
// velke foto
if ($width > FOTO_GAL_X) {
$new_width = FOTO_GAL_X;
$new_height = ceil(FOTO_GAL_X * $height / $width);
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($ciel);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$new_nahlad = "../pic_fotky/".$file;
// Output
imagejpeg($image_p, $new_nahlad, PART_QUAL);
}
// nahlad
$x_const = FOTO_THUMB_X;
$y_const = FOTO_THUMB_Y;
if($width > $x_const || $height > $y_const){ // ak je aspon jeden rozmer vascsi, ideme menit obr.
// nastav spravne nove rozmery
if ($width > $x_const && $height > $y_const) {
if ($height > $width){
$new_width = $y_const * $width / $height;
$new_height = $y_const;
} else { // na sirku
$new_width = $x_const;
$new_height = $x_const * $height / $width;
}
} elseif ($width > $x_const && $height <= $y_const) {
$new_width = $x_const;
$new_height = $x_const * $height / $width;
} elseif ($width <= $x_const && $height > $y_const) {
$new_width = $y_const * $width / $height;
$new_height = $y_const;
}
// nove rozmery nastavene
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($ciel);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$new_nahlad = "../pic_nahlady/".$file;
// Output
imagejpeg($image_p, $new_nahlad, PART_QUAL);
} else {
copy($ciel, "../pic_nahlady/".$file);
}
unlink($ciel);
// uloz do databazy
$result = mysql_query("BLA BLA nejaky SQL prikaz");
if ($result) {
echo "Nech zije socialisticky tabor (fotka uspesne ulozena)!";
exit();
}
|
Je to trochu oklieštené, pôvodná verzia ešte rozbaľuje ZIP súbor plný JPEG obrázkov a všetky ich zmenšuje (ale používa pri tom neštandardnú knižnicu).
Robí ukladanie obrázkov v 2 vrstvách - pre náhľad a pre zobrazenie na stránke. Do konštánt FOTO_GAL_X, FOTO_THUMB_X, FOTO_THUMB_Y, PART_QUAL definuj hodnoty (v poradí) "šírka fotky na stránke", "šírka náhľadu", "výška náhľadu", "JPEG kvalita (od 0 do 100, odporúčam nad 70, je to tuším nepovinný parameter s východziou hodnotou 75)". |
_________________ [quote="A. S. Tanenbaum"]The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.[/quote] | |
    |
 |
mondzo
 Užívateľ
 Založený: 09.02.2007 Príspevky: 248
 | Zaslal: Ut 08.01.08 15:06 |   |
p360t -> velmi pekne, dal si mi do hlavy celkom fajn myslienku a preto sa Ta chcem spytat (ja viam ako na zmensenie obrazkov atd.), ale aku kniznicu pouzivas na to zipko a ako to presne pracuje?
Heh, mam jednoduchu fotogaleriu na webe, moju vlastnu aj s jednoduchym adminom, kde sa daju uploadovat fotky, manazovat ich nazvy, popisy atd., ktore sa potom zmensuju a robi sa este aj thumbnail z nich, ale uploadujem vzdy len po 4 fotky, kvoli pomalemu uploadu mojho internetu. Robil som to pre moju drahu, keby to bolo pre mna, nahadzem na web cez ftp, urobim update databazy atd.
No myslienka s tym zipkom by mi celkom bodla, keby som to rozchodil tak by sa mozno vyriesilo tym velmi vela problemov.
Cez ftp nahodit na server zipko a v adminovi ho uz potom manazovat.
Dik... |
| |
   |
 |
p360t
 Skúsený užívateľ
 Založený: 30.05.2006 Príspevky: 1775 Bydlisko: BA - EASTSIDE
 | Zaslal: Ut 08.01.08 15:19 |   |
So Zipkom je to totiž tak - niekto ho na hostingu má, niekto nemá. Niekto má admina hostingu ochotného, niekto neochotného. Niekto má na svojom hostingu veľké práva, niekto malé. Vyber si vždy tú horšiu možnosť a dostaneš hosting, na ktorom som toto zipko realizoval.
Tak som sa jedného krásneho rána poobzeral po internete, a zistil som, že rovnaký problém majú aj iní ľudia. A tiež, že to už niekto takmer spoľahlivo vyriešil.
Takže, stránka http://www.phpconcept.net knižnica PCLZIP, naštuduj a už ti to bude jasné (to isté ako v tomto mojom kóde sa robí pre každý JPEG súbor ktorý tá knižnica rozozná, naviac ak nahrávaš len jeden JPEG súbor, spracuje sa len ako jeden súbor - tj. rozoznáva sa typ nahrávaného súboru).
Opakujem, toto je neštandardné riešenie v prípade, že nemáš originálnu PHPčkovskú ZIP knižnicu a nemáš možnosť ju na hosting nainštalovať. |
_________________ [quote="A. S. Tanenbaum"]The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.[/quote] | |
    |
 |
sento
 Užívateľ
 Založený: 21.06.2007 Príspevky: 421
 | Zaslal: Ut 08.01.08 15:35 |   |
Hned na zaciatok podotykam, ze nie som odporcom PHP;
Ja pouzivam .NET a C# na servri, a tam nie je problem mat nainstalovanu akukolvek kniznicu. Zmensovanie obrazkov (presnejsie prekonvertovanie do akehokolvek formatu a zmena rozmerov) je potom v C# jednoduche. |
| |
  |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
|