login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Afbeelding uploaden, resizen en saven

Offline Ontani - 19/07/2005 14:29 (laatste wijziging 19/07/2005 14:29)
Avatar van OntaniGouden medailleGouden medailleGouden medailleGouden medaille

-1
ik heb nu een upload script voor afbeeldingen.
nu zou ik bij het uploaden die willen resizen naar 800 x 600 als de resolutie groter zou zijn. dan die 800 x 600 of kleinere versie opslaan als image.jpg en een thumnail van 100 x 75 opslaan als image_thumb.jpg.

mijn upload script tot nu toe:

  1. <?
  2. if($aSession['loggedIn'] == TRUE) {
  3. $site_name = $_SERVER['HTTP_HOST'];
  4. $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  5. $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  6.  
  7. $upload_dir = "screenshots/";
  8. $upload_url = $url_dir."/files/";
  9. $message ="";
  10.  
  11. function do_upload($upload_dir, $upload_url, $username) {
  12.  
  13. $temp_name = $_FILES['userfile']['tmp_name'];
  14. $file_name = $_FILES['userfile']['name'];
  15. $file_name = str_replace("\\","",$file_name);
  16. $file_name = str_replace("'","",$file_name);
  17. $ext = substr($file_name,(strpos($file_name , '.', 1)),(strlen($file_name)-strpos($file_name , '.', 1)));
  18. echo $ext;
  19. $file_type = $_FILES['userfile']['type'];
  20. $file_size = $_FILES['userfile']['size'];
  21. $result = $_FILES['userfile']['error'];
  22. $file_url = $upload_url.$file_name;
  23. $randInt = rand(1, 9999999999);
  24. $file_path = $upload_dir.$randInt.$ext;
  25.  
  26. //File Name Check
  27. if ( $file_name =="") {
  28. $message = "Invalid File Name Specified";
  29. return $message;
  30. }
  31. //File Size Check
  32. else if ( $file_size > 512000) {
  33. print $file_size;
  34. $message = "The file size is over 500kB.";
  35. return $message;
  36. }
  37. //File Type Check -- Prevent possible attacks
  38. else if ( strpos($file_name,".php") !== false
  39. || strpos($file_name,".cgi") !== false
  40. || strpos($file_name,".htm") !== false
  41. || strpos($file_name,".inc.php") !== false
  42. || strpos($file_name,".phtm") !== false )
  43. return;
  44. else if ( strpos($file_type,"image") !== false);
  45. else {
  46. $message = "Sorry only image upload allowed." ;
  47. return $message;
  48. }
  49.  
  50. $result = move_uploaded_file($temp_name, $file_path);
  51. $old_umask = umask(0);
  52. if (!chmod($file_path,0777))
  53. $message = "change permission to 755 failed.";
  54. else
  55. $message = ($result)?$randInt.$ext." uploaded successfully." :
  56. "Something is wrong with uploading a file.";
  57. $query = "INSERT INTO screenshots VALUES ('','".$randInt.$ext."','".$username."')";
  58. $result = mysql_query($query) or die(mysql_error());
  59. return $message;
  60. }
  61.  
  62. if ($_FILES['userfile']) {
  63. $resource = fopen("log.txt","a");
  64. fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
  65. .$_FILES['userfile']['name']." "
  66. .$_FILES['userfile']['type']."\n");
  67. fclose($resource);
  68.  
  69. $message = do_upload($upload_dir, $upload_url, $aSession['username']);
  70. print "<script>window.location.href='index.php?addScreenshot=true&message=$message'</script>";
  71. }
  72. else if (!$_FILES['userfile']);
  73. else
  74. $message = "Invalid File Specified.";
  75. ?>
  76. <div align="center">
  77. <font color=red><?=$_REQUEST[message]?></font>
  78. <br>
  79. Only images are allowed (jpg or gif). Maximum size is 500kb.
  80. <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post" action="index.php?addScreenshot=true">
  81. Upload File <input type="file" id="userfile" name="userfile">
  82. <input type="submit" name="upload" value="Upload">
  83. </form>
  84. </div>
  85. <?
  86. }
  87. ?>

3 antwoorden

Gesponsorde links
Offline Gerard - 19/07/2005 14:50
Avatar van Gerard Ouwe rakker Ontani, dit is niet bedoeld als een troll ofzo maar ik zie dat je nog geen effort hebt gemaakt om zelf er iets aan te doen. Wat heb je zelf al geprobeert m.b.t. GD?

Ik vind je uploadscript trouwens netjes, complimentje!
Offline Ontani - 19/07/2005 15:14
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
toch maar effe een vraagje wat is troll?

maar idd zoals je zegt heb geprobeerd met gd maar ik weet niet hoe je daar bijvoorbeeld bestanden mee opslaat.

dit zou bijvoorbeeld m'n viewScreenshots.php zijn:
  1. <?php
  2. if($_GET['image'])
  3. { // het is niet handig om de grootte mee te geven maar voor test doeleinden wel
  4. //Waar komt het bestand vandaan?
  5. $bronvanhetbestand = "screenshots/". $_GET['image'];
  6.  
  7. //De hoogte en breedte ophalen van het plaatje
  8. $dimensions = getimagesize($bronvanhetbestand);
  9.  
  10. //Dit is de breedte die alle plaatjes krijgen
  11. $doelbreedte = 800;
  12.  
  13. //Hoogte en breedte toekennnen aan nieuwe variabelen
  14. $bronbreedte = $dimensions[0];
  15. $bronhoogte = $dimensions[1];
  16.  
  17. //De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
  18. $doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
  19.  
  20. //De hoogte, als het nodig is, afronden
  21. $doelhoogte = round($doelhoogte, 0);
  22.  
  23. //Zeggen dat dit bestand een plaatje is
  24. header('content-type: image/jpeg');
  25.  
  26. //Het plaatje inlezen in de variabele $image
  27. $image = imagecreatefromjpeg($bronvanhetbestand);
  28.  
  29. //een nieuw klein plaatje maken met de gewenste grootte
  30. $destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
  31.  
  32. //Het nieuwe plaatje vullen met verkleinde plaatje
  33. imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
  34.  
  35. //Het plaatje weergeven
  36. imagejpeg($destination);
  37.  
  38. //Het bronplaatje verwijderen
  39. imagedestroy($image);
  40.  
  41. //Het doelplaatje verwijderen
  42. imagedestroy($destination);
  43. }
  44. else
  45. {
  46. $upload_dir = "screenshots/";
  47. $handle=opendir($upload_dir);
  48. $filelist = "";
  49. while ($file = readdir($handle)) {
  50. if(!is_dir($file) && !is_link($file)) {
  51. $filelist .= "<br><a href='viewScreenshot.php?image=$file' target='_blank'>".$file."</a>";
  52. }
  53. }
  54. echo $filelist;
  55. }
  56. ?>
Offline Ontani - 19/07/2005 15:28
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
het is me gelukt met de volgende code:

  1. <?php
  2.  
  3. function miniature($pict, $dest_pict){
  4.  
  5. $handle = @imagecreatefromjpeg($pict);
  6.  
  7. $x=imagesx($handle);
  8. $y=imagesy($handle);
  9.  
  10. if($x > $y){
  11. $max = $x;
  12. $min = $y;
  13. }
  14. if($x <= $y){
  15. $max = $y;
  16. $min = $x;
  17. }
  18.  
  19. $size_in_pixel = '100';
  20.  
  21. $rate = $max/$size_in_pixel;
  22. $final_x = $x/$rate;
  23. $final_y = $y/$rate;
  24.  
  25. if($final_x > $x) {
  26. $final_x = $x;
  27. $final_y = $y;
  28. }
  29.  
  30. $final_x = ceil($final_x);
  31. $final_y = ceil($final_y);
  32.  
  33. $black_picture = imageCreatetruecolor($final_x,$final_y);
  34. imagefill($black_picture,0,0,imagecolorallocate($black_picture, 255, 255, 255));
  35. imagecopyresampled($black_picture, $handle, 0, 0, 0, 0,$final_x, $final_y, $x, $y);
  36.  
  37. if(!@imagejpeg($black_picture,$dest_pict, $size_in_pixel))
  38. imagestring($black_picture, 1, $final_x-4, $final_y-8, ".", imagecolorallocate($black_picture,0,0,0));
  39.  
  40. //The number is the quality of the result picture
  41. imagejpeg($black_picture,'', '100');
  42. imagedestroy($handle);
  43. imagedestroy($black_picture);
  44. }
  45.  
  46. $pict = "screenshots/932623101.jpg";
  47. $dest_pict = "screenshots/932623101_thumb.jpg";
  48. miniature($pict, $dest_pict);
  49.  
  50. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s