Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja thumbin luonti

Sivun loppuun

EterAnal [29.06.2006 16:57:24]

#

Moro,

Tässä yritän saada gallerian thumbien generointia toimintaan tuon vinkin https://www.ohjelmointiputka.net/koodivinkit/24105-php-kuvan-koon-muunnin pohjalta.

Haluan tallentaa generoidut kuvat thumb-kansioon. Pitäisikö sen onnistua tällä tavalla:

imagejpeg($pikkukuva,"../image/thumb/$filu");

Muuttuja filu sisältää nyt funktiolle viedyn alkuperäisen kuvan tiedostonimen mikäli olen oikein ymmärtänyt. Kuitenkin thumb-kansio pysyy tyhjänä vaikka virheilmoituksia ei tule ja kirjoitusoikeuksien pitäisi olla kunnossa. Mikäs mahtaa olla vialla?

- Jari -

EterAnal [30.06.2006 14:31:39]

#

Sitten olisi vielä kysymys, että mitä tuo funktio "muunnakoko" palauttaa? Tuo thumbikuvahan on tarkoitus tallentaa erilliseen hakemistoon ja hakea se sitten sieltä. Thumbi generoidaan vain jos sitä ei jo ole valmiina kyseisestä kuvasta. Laitoin funktion kutsun koodiin tähän tapaan:

muunnakoko($photoname[$i],120,"w");

Tuossa photoname-muuttuja on nyt taulukko johon on glob-funktiolla luettu hakemiston kuvien nimet. Kuitenkaan thumbi ei ilmesty thumb-kansioon. Olen tässä miettinyt, että pitääkö se sitten se itse kuva lukea johonkin muuttujaan ja käsitellä sitä sitten vai riittääkö, että tuolla globilla lukee kuvien nimet taulukkoon? Testasin globin tilalla file-funktiota, mutta ei sekään toiminut. Olisin kiitollinen avusta. Tämä homma ei oikein nyt etene.

tsuriga [30.06.2006 14:44:31]

#

Tuolta vinkin kommenteista viimeinen kommentti. soodan galleriakoodista näkyy tuo thumbsien generointi löytyvän.

EterAnal [30.06.2006 16:31:51]

#

Sieltä minä olen tuon omankin koodin ottanut.
imagejpeg($pikkukuva,"../image/thumb/$filu");
Nyt kysynkin, että onko tuo oikein ja pitäisikö tuon nyt kopioida pikkukuva tuonne thumb-kansioon filu nimellä vai ei? Siitä soodan koodista ei saa selvää kun kommentointi puuttuu lähes tyystin.

sooda [30.06.2006 16:46:18]

#

No kyllähän sen pitäisi se sinne kirjoittaa kunhan muuttujat ovat oikein. Eikö tosiaan tule mitään virheilmoituksia? Onko ne kenties vaikka kytketty palvelimen konffeista pois? Onko rivi oikeassa paikassa?

Damiqib [30.06.2006 16:59:59]

#

Kokeilin juuri äsken tuota soodan supahgaltsua ja ainakin itselläni toimi ihan oikein (hetken henkisen jumituksen jälkeen). Sinun ei tarvitse tehdä scriptille mitään thumbien luomiseksi, vaan niiden generointi toimii suoraan, kunhan olet luonut oikeat kansiot. Varmista vielä, että hakemistorakenteesi on oikein.

index.php
staili.css
asetukset.php
thumpi.php <- oma virheeni oli tuossa, ei pehmeä vaan kova p :D
kuvakansio
----orig <- luo tämä kansio kuvakansioosi ja siirrä kuvasi tänne
------kuva1.jpg
------kuva2.jpg
----thmb <- luo myös tämä kansio, mutta älä siirrä tänne _mitään_, !!ei u:ta!!
------kuva1.jpg <- scripti generoi tämän
------kuva2.jpg <- scripti generoi tämän

EterAnal [30.06.2006 18:39:08]

#

Mie käytän tuota Tempfile:n koodia, en soodan.

Tuossa se on nyt kokonaisuudessaan:

***********************************************
<?php include "header.php"; ?>

<h2>zzzz</h2>

<?php

/*hakee kuvien nimet zzzz-kansion alta ja tulostaa ne sekä tekee niihin linkit*/

$photoname = glob("../image/orig/yyyy/zzzz/*");

for($i = 0; $i < count($photoname); $i++) {

/*isot kuvat pienemmiksi ja näytetään nämä pienet kuvat, mutta linkataan alkuperäisiin*/
muunnakoko($photoname[$i],120,"w");

$photoname[$i] = basename($photoname[$i]);

echo "<a href=\"../image/orig/yyyy/zzzz/$photoname[$i]\"><img src=\"../image/thumb/yyyy/zzzz/$photoname[$i]\" class=\"photo\"";

/*tulostetaan kuvien nimet kuvien alle ja titleen*/
$photoname[$i] = str_replace(".jpg","",$photoname[$i]);
$photoname[$i] = str_replace(".png","",$photoname[$i]);
$photoname[$i] = str_replace(".gif","",$photoname[$i]);
$photoname[$i] = str_replace(".bmp","",$photoname[$i]);
echo "title=\"$photoname[$i]\"></a><br/>$photoname[$i]<br/>";
}
?>

<?php include "footer.php"; ?>

/*Tempfilen thumbifunktio*/
<?php function muunnakoko($filu, $koko, $hvaiw){

  $tiedot = getimagesize($filu);

    if($tiedot[2] == 2){
        header("Content-type: image/jpeg");
        $kuva = imagecreatefromjpeg($filu);
    } else if($tiedot[2] == 3){
        header("Content-type: image/png");
        $kuva = imagecreatefrompng($filu);
    } else die();

    $korkeus = $tiedot[1];
    $leveys = $tiedot[0];

    if($hvaiw == "h"){
        $suhde = $leveys / $korkeus;
        $pikkukork = $koko;
        $pikkulev = $koko * $suhde;
    } else if($hvaiw == "w"){
        $suhde = $korkeus / $leveys;
        $pikkukork = $koko * $suhde;
        $pikkulev = $koko;
    }

    $pikkukuva = imagecreatetruecolor($pikkulev, $pikkukork);
    imagecopyresampled($pikkukuva, $kuva, 0, 0, 0, 0, $pikkulev+1, $pikkukork+1, $leveys, $korkeus);

/*kirjoitetaan kuva vuosikansion ja kuvien kansion alle*/
/*yritin myös kirjoittaa kuvia suoraan thumb-kansioon -> ei onnistunut*/
    imagejpeg($pikkukuva,"../image/thumb/yyyy/zzzz/$filu");
    imagedestroy($kuva);
    imagedestroy($pikkukuva);
}
?>
****************************************************

Ongelma on se, että mitään virheilmoituksia ei tule, mutta mikään ei tunnu toimivan. Thumbit ei ilmesty kansioihin joihin ne pitäisi. Tuossa koodissa yyyy korvataan vuosiluvulla ja zzzz hakemiston nimellä aikaisemmassa vaiheessa.

Edit: Huomasin ettei selain anna enää mitään virheilmoituksia, vaikka kuinka yrittäisin tehdä virheitä. En ole koskenu mihinkään säätöihin. Tässä on Abyss asennettuna. Ihme homma :/

Edit: Löysin syyllisen. Olin laittanut päälle PHP.INI-tiedoston GD-tukea varten, mutta siellä on varmaan jossain asetuksissa säädetty ettei virheilmoituksia näytetä sillä kun otin moisen tiedoston pois käytöstä niin virheilmoitukset tekivät comebackin :D

Mod. Edit: kooditagit

sooda [30.06.2006 21:22:12]

#

EterAnal kirjoitti:

Löysin syyllisen. Olin laittanut päälle PHP.INI-tiedoston GD-tukea varten, mutta siellä on varmaan jossain asetuksissa säädetty ettei virheilmoituksia näytetä sillä kun otin moisen tiedoston pois käytöstä niin virheilmoitukset tekivät comebackin :D

Kertoisitko mitä virheitä tulee, jos kerran ne tuli näkyviin?

EterAnal [01.07.2006 15:16:46]

#

Tuollainen virheilmoitus:

Fatal error: Call to undefined function imagecreatefromjpeg() in C:\Documents and Settings\jarikokko\My Documents\PHP\kotisivuprojektiv3\php\FinnCRack Transferfrom CERN to Kumpula April.php on line 38

Ihan kuin GD ei vieläkään olisi päällä. Mie kyllä yritin noudattaa niitä sekavia ohjeita niin hyvin kun taisin, mutta ilmeisesti en vieläkään ole onnistunut asentamaan sitä GD-tukea parin tunnin taistelusta huolimatta. Olisiko jollakin laittaa tänne sellainen yksinkertainen 5-10 kohdan lista mitä pitää tehdä, että sen GD-tuen saa päälle? Siis tyyliin:

1. Lataa se tietty paketti tästä osoitteesta
2. Pura se tähän kansioon
3. Muuta siitä ja siitä tiedostosta ne ja ne asiat

Sitten vielä kysymys, että jos annan php:lle käskyn tehdä joku tiedosto jonkun hakemistopolun päähän ja tätä hakemistopolkua ei ole vielä luotu niin osaako php luoda sekä sen hakemistopolun, että tiedoston sen hakemistopolun päähän yhdellä komennolla vai pitääkö minun luoda ensin hakemistot ja sen jälkeen vasta luoda tiedosto?

Draiz [01.07.2006 15:31:52]

#

EterAnal kirjoitti:

mitä pitää tehdä, että sen GD-tuen saa päälle?

Windows:
1. Etsi php.ini
2. Etsi sieltä kohta Dynamic Extensions
3. Etsi kohta, jossa lukee jotain tähän malliin: extension=php_gd2.dll
4. Jos tuon tekstin edessä on puolipiste, poista se, jolloin php lataa GD-kirjaston.
5. Testaa hienoa leetskriptiäsi, pitäisi toimia, jos toimii -> \o/

edits. extension_dir kantsii olla kohdallaan php.ini:stä

EterAnal kirjoitti:

Sitten vielä kysymys, että jos annan php:lle käskyn tehdä joku tiedosto jonkun hakemistopolun päähän ja tätä hakemistopolkua ei ole vielä luotu niin osaako php luoda sekä sen hakemistopolun, että tiedoston sen hakemistopolun päähän yhdellä komennolla vai pitääkö minun luoda ensin hakemistot ja sen jälkeen vasta luoda tiedosto?

Ei ainakaan tietääkseni osaa.

EterAnal [01.07.2006 20:43:21]

#

HAHAA!

Pienen taistelun jälkeen kone alkaa pikkuhiljaa luovuttamaan ja uskomaan, että sen on nyt pakko alkaa toimimaan. Kiitoksia, uskon, että nyt se gd-tsydeemi skulaa. Tämä ilta kuluukin rattoisasti mun hienoja skriptejä testaillessa :)

EDIT: No nyt on sitten seuraavanlainen ongelma kun siirsin sälät palvelimelle:

Fatal error: Allowed memory size of 9437984 bytes exhausted (tried to allocate 6528 bytes) in /var/www/html/research/cms/tracker/php/FinnCRack Transferfrom CERN to Kumpula April.php on line 9

Mitähän tuo mahtaa tarkoittaa?


Sivun alkuun

Vastaus

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

Tietoa sivustosta