Olen aloittelija php-koodauksessa ja kaipaisin nyt hieman apua seuraavanlaisen asian suhteen. En tiedä miten aloittaisin, joten kaikki vinkit otetaan mielellään vastaan.
Eli, pitäisi saada aikaiseksi scripti, joka tallettaa kuvan (.jpg) tiettyyn kansioon ja tulostaa
sen sieltä selaimelle ennalta määrättyyn paikkaan, määrätyn kokoisena mittasuhteet säilyttäen. Lisääjän ei tulisi tarvita huolehtia kuvan koosta.
Siis kuva ladataan selaimesta palvelimelle, muutetaan tietyn kokoiseksi kuvasuhteet säilyttäen ja tallennetaan tiettyyn hakemistoon?? Juuri tuollaisen skriptin tein tossa männäviikolla :P Tosin se tekee vielä kuvasta thumbnailin...
ajv kirjoitti:
Siis kuva ladataan selaimesta palvelimelle, muutetaan tietyn kokoiseksi kuvasuhteet säilyttäen ja tallennetaan tiettyyn hakemistoon?? Juuri tuollaisen skriptin tein tossa männäviikolla :P Tosin se tekee vielä kuvasta thumbnailin...
Mistä se löytyikään kun voisin hieman katsella sitä josko siinä olisi ratkaisu erääseen pulmaani.
Pistelen koodia vaikka sähköpostiin illalla, kunhan kotiin pääsen.
Tai noh,katotaan jos jaksan sitä hieman parannella, niin sit sen vois ehkä laittaa tännekkin...
Kuvan (tiedoston) lähettäminen selaimesta ja tallennus palvelimelle:
PHP FAQ
ajv kirjoitti:
Pistelen koodia vaikka sähköpostiin illalla, kunhan kotiin pääsen.
Tai noh,katotaan jos jaksan sitä hieman parannella, niin sit sen vois ehkä laittaa tännekkin...
Jos moinen löytyy niin laitappa tännekinpäin s-postia tai laita koko zydeemi ohjelmointiputkaan. :)
Parantelin vähän ja lisäsin tohon kuvien listauksen etusivulle: Ehkäpä tosta voi jotain oppia, soveltaminen ainakin pitäisi olla suht. helppoa. Jos tosta haluaa oikeen kunnollisen, niin tarkistukset ja virheenkäsittely täytyy lisätä...
*** index.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Simppeli kuva-galleria</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form enctype="multipart/form-data" action="upload.php" method="POST"> <input name="tiedosto" type="file"> <input type="submit" value="Lataa"> </form> <?php $vierekkain = 5; $im = "images"; $tn = "tn"; $i = 1; $k = 1; $a = opendir($tn); while(($kuva = readdir($a)) !== false){ if(is_dir($kuva)) continue; //getimagesize() palauttaa taulukon, jossa on tietoa kuvasta $r = @getimagesize("$tn/$kuva"); $width = $r[0]; $height = $r[1]; // purkkaa... mutta en keksinyt parempaakaan tapaa, kuin heittää jokaiselle riville oma taulukko //=> paremman näköinen jos ja kun on erisuhteisia kuvia if ($k > $vierekkain) $k = 1; if ($k == 1) print "<table border=\"0\" cellpadding=\"0\" align=\"center\">\n <tr>\n"; print "<td valign=\"bottom\"><a href=\"$im/$kuva\"><img src=\"$tn/$kuva\" border=\"0\" width=\"$width\" height=\"$height\"></a></td>\n"; if ($k == $vierekkain) print "</tr>\n</table>\n"; $k++; $i++; } if ($k <= $vierekkain) echo "</tr>\n</table>\n"; closedir($a); ?> </body> </html> ----------------------------------------------------------------------------------------- *** upload.php <?php //uploadataan alkuperäinen tiedosto move_uploaded_file($HTTP_POST_FILES["tiedosto"]["tmp_name"],$HTTP_POST_FILES["tiedosto"]["name"]); //ja siirrytään tekemään uusia oikean kokoisia kuvia header("Location: create_image.php?kuva=".$_FILES["tiedosto"]["name"]); ?> ----------------------------------------------------------------------------------------- *** create_image.php <?php //Scripti tekee ison ja pikkukuvan, sekä tallettaa ne niille tarkoitettuihin hakemistoihin //alkuperäisellä nimellä //varmista, että sinulla on hekemistot valmiina ja oikeudet kunnossa (chmod 777) //thumbnailien hakemisto: $tn = "tn"; //isojen kuvien hakemisto $im = "images"; //MUUTA TÄMÄ: //copy() tarvitsee jostain syystä absoluuttisen osoitteen, jos jollakin parempi idea, niin kertokoon $adress = "http://absoluuttinen.osoite/scriptin_hekemisto"; //kuvan nimi tulee osoiteriviltä... $kuva = $_GET['kuva']; //tehdään ensin pikku-kuva if(copy("$adress/resize.php?koko=120&kuva=$kuva","$tn/$kuva")){ //jos kopiointi onnistui, tehdään vielä iso kuva... if(copy("$adress/resize.php?kuva=$kuva&koko=550","$im/$kuva")){ //poistetaan kuva... unlink($kuva); //ohjataan etusivulle header("Location: index.php"); }else{ echo "Ison kuvan luonti epäonnistui"; } }else{ echo "Kuvien luonti epäonnistui"; } //poistetaan alkuperäinen kuva unlink($kuva); ?> ----------------------------------------------------------------------------------------- *** resize.php <?php //tämä "thubnaileri" on alkuperäisenä putkan koodikirjastossa: //https://www.ohjelmointiputka.net/koodivinkit/24105-php-kuvan-koon-muunnin $koko = $_GET['koko']; $img = $_GET['kuva']; $tiedot = getimagesize($img); if($tiedot[2] == 2){ header("Content-type: image/jpeg"); $kuva = imagecreatefromjpeg($img); }elseif($tiedot[2] == 3){ header("Content-type: image/png"); $kuva = imagecreatefrompng($img); }else die(); $korkeus = $tiedot[1]; $leveys = $tiedot[0]; if($korkeus > $leveys){ $suhde = $leveys / $korkeus; $pikkukork = $koko; $pikkulev = $koko * $suhde; }else{ $suhde = $korkeus / $leveys; $pikkukork = $koko * $suhde; $pikkulev = $koko; } $pikkukuva = imagecreatetruecolor($pikkulev, $pikkukork); imagecopyresized($pikkukuva, $kuva, 0, 0, 0, 0, $pikkulev+1, $pikkukork+1, $leveys, $korkeus); imagejpeg($pikkukuva); imagedestroy($kuva); imagedestroy($pikkukuva); ?>
Ja ihan pieneksi helpotukseksi tossa on nyt zipissä kaikki filut:
http://cgi.evtek.fi/~k0101030/gallery.zip
Aihe on jo aika vanha, joten et voi enää vastata siihen.