Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: kuvan talletus/tulostus

guitar [11.08.2004 09:17:00]

#

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.

ajv [11.08.2004 12:28:21]

#

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...

Wizard [11.08.2004 14:02:38]

#

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.

ajv [11.08.2004 14:43:19]

#

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...

Heikki [11.08.2004 15:39:57]

#

Kuvan (tiedoston) lähettäminen selaimesta ja tallennus palvelimelle:
PHP FAQ

guitar [11.08.2004 18:33:26]

#

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. :)

ajv [11.08.2004 22:50:01]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta