[PHP] imagecreatefromjpeg bewaard fot op server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een photogallery te maken. Het idee is een pagina met thumbnails, je klitk erop, popup, allemaal hardstikke mooi. Mijn script doet het, op het volgende na, ik gebruik de volgende code om van de orginele foto een thumbnail te maken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
global $gd2;
$name = "./$days[$day]/$a_img[$x]";
$imagehw = getimagesize($name);
$filename = "gd2_$days[$day]_num$x.jpg";
$src_img = imagecreatefromjpeg($name);
$dst_img = ImageCreate(100,75);
imagecopyresized($dst_img,$src_img,0,0,0,0,100,75,$imagehw[0],$imagehw[1]);
imagejpeg($dst_img,$filename);
imagedestroy($dst_img);
imagedestroy($src_img);
?>


('$days[$day]' is de naam van de directory, '$a_img[$x]' de filename van de foto)

Vervolgens kan ik dus gewoon de thumbnail aanroepen. Alleen nu komt het probleem; dit script laat alle gemaakte thumbnails (dus de gd2_blabla.jpg files) in de directory waar dit script gebased is staan.

Ik heb geprobeerd met return $dst_img voor de destroys, maar dat werk niet.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

dan laat je hem toch direct door een scriptje verplaatsen of direct op de goede plaats zetten.

Ik ken de imagecreate functies niet echt maar ipv filename kan je toch ook dir/filename doen :?

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, dat kan wel, maar dat wil ik niet, want ik zit met zeer beperkte schijfruimte op die server en veel foto's

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okay, ik heb nu wat door, ik heb nu dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
global $gd2;
$name = "./$days[$day]/$a_img[$x]";
$imagehw = getimagesize($name);
$filename = "gd2_$days[$day]_num$x.jpg";
$src_img = imagecreatefromjpeg($name);
$dst_img = ImageCreate(100,75);
imagecopyresized($dst_img,$src_img,0,0,0,0,100,75,$imagehw[0],$imagehw[1]);
//imagejpeg($dst_img,$filename);
//imagedestroy($dst_img);
imagedestroy($src_img);
imagejpeg($dst_img);

En krijg dan een scherm vol tekens, duuuuus, het is wel gelukt maar de pagina weet nog niet dat het een plaatje is. Dat kan ik wel aanroepen met header("Content-type: image/jpeg");, maar ik kan geen headers plaatsen want die heb ik al ergens anders staan

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je wilt dus dat een php script gewoon een plaatje is?
nogal logisch dat het dan in de script directory komt, als je het in een andere dir wilt hebben gebruik dan gewoon include ofzo

[ Voor 76% gewijzigd door Wolfboy op 30-07-2003 00:44 ]

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, het idee is dat er een fototje of 600 op komen te staan en er zijn iets van 5000 hits per dag vanaf volgende week, dus ik wil dat ze niet op de server blijven staan. Dus alleen tijdens het loaden van de pagina

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Damn, Wolfboy, ik heb het! Ik zet ze niet in de cache van de server, maar op de PC van de user zelf :D

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Ow... je include dit stukje script toch niet in een html-pagina, hè? :X

[ Voor 3% gewijzigd door bigtree op 30-07-2003 00:57 . Reden: 'in' toegevoegd ]

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wat is HTML? 8)7

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
En krijg dan een scherm vol tekens, duuuuus, het is wel gelukt maar de pagina weet nog niet dat het een plaatje is. Dat kan ik wel aanroepen met header("Content-type: image/jpeg");, maar ik kan geen headers plaatsen want die heb ik al ergens anders staan
Hieruit concludeerde ik zo'n beetje dat het script halverwege de pagina ineens een plaatje gaat uitpoepen. Waarom zou je anders al headers verstuurd hebben?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als je output een stuk html en een plaatje moet zijn dan heb je 2 requests.
Eentje voor de html en 1 voor het plaatje, ieder met zijn eigen header.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 17-09 16:59

Johnny

ondergewaardeerde internetguru

Verwijderd schreef op 30 July 2003 @ 00:45:
Ja, het idee is dat er een fototje of 600 op komen te staan en er zijn iets van 5000 hits per dag vanaf volgende week, dus ik wil dat ze niet op de server blijven staan. Dus alleen tijdens het loaden van de pagina
Denk je dat die server het leuk vind om iedere dag 5000 keer een thumbnail aan te maken? En dat je bezoekers willen wachten daarop?

Een JPEG thumbnail van 100x75 pixels is ongeveer 4 KB, dat keer 600 is 2400 KB voor alle thumbnails. Dat lijkt me echt veel en veel sneller gaan dan iedere keer al die thumbnails renderen.

Thumbnails in een andere map opslaan kun je op de volgende manier doen:
PHP:
1
2
3
4
5
6
$oldfile = "resultaat van je resize functie";
$newfile = "/pad/naar/dir/naam.jpg";

copy($oldfile, $newfile);

unlink($oldfile);

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

Verwijderd

Johnny schreef op 30 July 2003 @ 10:32:
Denk je dat die server het leuk vin dom iedere dag 5000 keer een thumbnail aan te maken? En dat je bezoekers willen wachten daarop?
Ja idd, lekker vertragend.

Ik maak een thumb bij het uploaden van het plaatje door mij, ik heb 120 plaatjes en kost maar iets van 500kb (iig niet veel) ofzo aan thumbnails.
Thumbnails in een andere map opslaan kun je op de volgende manier doen....
PHP:
1
2
3
4
5
6
7
8
function MoveFile($oldfile,$newfile){
  if ((file_exists($oldfile) && (!file_exists($newfile)) {
    copy($oldfile, $newfile);
    unlink($oldfile);
  } else {
   // make some error
  }
}

http://nl2.php.net/file_exists
http://nl2.php.net/copy
http://nl2.php.net/unlink

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik hoop toch dat dit een grapje is ondanks de wat misplaatste smiley :?

Tevens wil ik je verzoeken minder te kicken (oftewel reageren op jezelf met (on)bewust het resultaat dat je topic hoger in de topiclijst komt.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Johnny schreef op 30 July 2003 @ 10:32:
Een JPEG thumbnail van 100x75 pixels is ongeveer 4 KB, dat keer 600 is 2400 KB voor alle thumbnails. Dat lijkt me echt veel en veel sneller gaan dan iedere keer al die thumbnails renderen.
Ik denk dat het aantal foto's niet eens relevant is, maar wel de grootte van de foto's. Als een foto gemiddeld 150KB groot is en zijn thumbnail gemiddeld 4KB, dan kost het thumbnailen dus minder dan 3% extra schijfruimte. Dat is vast wel acceptabel, ongeacht wat de grootte van de webspace is.

Acties:
  • 0 Henk 'm!

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 14-09 18:19
oke. je kunt niet je foto. en je de rest van de html/ php page door 1 script request laten maken..

dus je zult..
1 html / php paigna moeten aan roepen. en in die page staat dan <img scr=""></imG>
2 scr van je img moet je gewoon naar de php page laten lopen die allen het plaatje maakt. met de header van jpg natuurlijk.

ja ik weet met page.php?action=bla kun je het idd in 1 file stopppen. maar goed. dat ff er buiten.

ps. het is altijd beter om thumbs op te slaan. als ze vaak bezoht worden.. ook al heb je weinig schijf ruimte.. ( koop schijf ruimte er bij.)

inno

Pagina: 1