login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cache afbeeldingen

Offline Frederic - 14/06/2005 18:54 (laatste wijziging 14/06/2005 18:54)
Avatar van FredericPHP ver gevorderde Ik heb 2 problemen met mijn script:
1: Als ik een afbeelding upload, dan kom ik zoals geplant op dezelfde pagina uit, maar het probleem is dat ik daar ook al een 'preview' toon van de afbeelding. Nu, als je een nieuwe afbeelding online zet, dan zal de pagina herladen worden, maar de oude afbeelding blijft getoont worden! Druk ik op F5, dan verschijnt de nieuwe afbeelding wel... Ik heb ook al geprobeerd met javascript het venster dan te herladen, maar ook dat lukte niet.
2: Kan iemand me vertellen of het mogelijk is om als een afbeelding kleiner is dan de vooropgestelde waarde (bvb 140) dat er evenzeer een vierkant van 140 op 140 wordt aangemaakt, en dat de geuploade figuur (deze is dus kleiner dan 140 op 140) daarin horiontaal en vertikaal gecentreerd wordt?

Thanks!

  1. <?php if (isset($_POST['uploaden']) && isset($_FILES['foto']) && is_uploaded_file($_FILES['foto']['tmp_name'])) {
  2. if($_FILES['foto']['type'] != "image/pjpeg" && $_FILES['foto']['type'] != "image/jpeg" && $_FILES['foto']['type'] != "image/gif" && $_FILES['foto']['type'] != "image/x-png" && $_FILES['foto']['type'] != "image/png"){
  3. header("Location:index.php?melding=Je mag enkel .jpg, .gif en .png bestanden uploaden!!");
  4. }
  5. else{
  6. $bestandsnaam = $_FILES['foto']['name'];
  7. copy($_FILES['foto']['tmp_name'], "gebruikers/avaters/".$_SESSION['gid'].".jpg");
  8. $afbeelding = imagecreatefromjpeg("gebruikers/avaters/".$_SESSION['gid'].".jpg");
  9. $oude_breedte = imagesx($afbeelding);
  10. $oude_hoogte = imagesy($afbeelding);
  11. $nieuwe_breedte_klein = 140;
  12. if ($nieuwe_breedte_klein < $oude_breedte || $nieuwe_breedte_klein < $oude_hoogte){
  13. $schaal = ($nieuwe_breedte_klein/$oude_breedte);
  14. $nieuwe_hoogte = ceil($oude_hoogte*$schaal);
  15. $kleine_afbeelding = imagecreatetruecolor($nieuwe_breedte_klein,$nieuwe_hoogte);
  16. imagecopyresized($kleine_afbeelding,$afbeelding,0,0,0,0,$nieuwe_breedte_klein,$nieuwe_hoogte,$oude_breedte,$oude_hoogte);
  17. imagejpeg($kleine_afbeelding, "gebruikers/avaters/".$_SESSION['gid']."_klein.jpg");
  18. }
  19. else{
  20. copy("gebruikers/avaters/".$_SESSION['gid'].".jpg", "gebruikers/avaters/".$_SESSION['gid']."_klein.jpg");
  21. }
  22.  
  23. $nieuwe_breedte_medium = 250;
  24. if ($nieuwe_breedte_medium < $oude_breedte || $nieuwe_breedte_medium < $oude_hoogte){
  25. $schaal = ($nieuwe_breedte_medium/$oude_breedte);
  26. $nieuwe_hoogte = ceil($oude_hoogte*$schaal);
  27. $kleine_afbeelding = imagecreatetruecolor($nieuwe_breedte_medium,$nieuwe_hoogte);
  28. imagecopyresized($kleine_afbeelding,$afbeelding,0,0,0,0,$nieuwe_breedte_medium,$nieuwe_hoogte,$oude_breedte,$oude_hoogte);
  29. imagejpeg($kleine_afbeelding, "gebruikers/avaters/".$_SESSION['gid']."_medium.jpg");
  30. }
  31. else{
  32. copy("gebruikers/avaters/".$_SESSION['gid'].".jpg", "gebruikers/avaters/".$_SESSION['gid']."_medium.jpg");
  33. }
  34. header("Location:index.php");
  35. }
  36. }
  37. ?>

4 antwoorden

Gesponsorde links
Offline prorsoft - 14/06/2005 19:10 (laatste wijziging 14/06/2005 19:11)
Avatar van prorsoft PHP gevorderde 1: mss ipv herladen naar andere pagina gaan? en dan desnoods op die pagina een header naar de referer?
Offline Thomas - 14/06/2005 19:10
Avatar van Thomas Moderator 1. plak een random string achter je plaatje, bijvoorbeeld image20.jpg?141412wgsgsg (met behulp van PHP, bijvoorbeeld met md5() of je gebruikt headers om de pagina altijd opnieuw te laden en niet uit cache te lezen - maar als plaatjes dezelfde naam hebben dan denkt het script dat de pagina hetzelfde is, maar de plaatjes zijn wel degelijk veranderd...)

2. Je kunt een plaatje toch altijd horizontaal (align="center") en verticaal (valign="middle" - dit is al de default) uitlijnen ?
Offline Frederic - 14/06/2005 19:25 (laatste wijziging 14/06/2005 19:25)
Avatar van Frederic PHP ver gevorderde @prorsoft: heb ik gedaan, maar als ik dan terug ga naar de pagina waar de foto getoont wordt is er nog steeds de oude foto!

@fangorN:
1. Die string, moet die altijd hetzelfde zijn, of juist altijd verschillend?
2. Ja, maar ik bedoelde om een plaatje te maken van 140 x 140, en dat daar dan in te centreren... Maar jouw oplossing kan idd ook!
Offline nemesiskoen - 14/06/2005 19:39
Avatar van nemesiskoen Gouden medaille

PHP expert
anders het tijdelijk opslaan in een tabel

  1. <?php
  2.  
  3. if( **upgeload** ) {
  4.  
  5. $query = "INSERT into afbeelding (plaats)
  6. VALUES ('gebruikers/avaters/".$_SESSION['gid'].".jpg')";
  7. MySQL_query( $query ) or die( MySQL_error() );
  8.  
  9. $id = MySQL_insert_id();
  10.  
  11. header("location:". $_SEVER['PHP_SELF'] ."?id=". $id);
  12.  
  13. }
  14. if( isSet( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) {
  15. $query = MySQL_query( "SELECT plaats
  16. FROM afbeelding
  17. WHERE id = '". $_GET['id'] ."'" );
  18. $afbeelding = MySQL_result( $query, 0 );
  19.  
  20. echo "<img src='". $afbeelding ."' alt='geuploade afbeelding' />";
  21.  
  22. }
  23. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.348s