Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP Thumb - wykorzystanie zmiany rozmiaru obrazka
Forum PHP.pl > Forum > PHP
aldzik
Witam! Wiem ze było wiele takich tematów na tym forum i w innych przypadkach mi pomogły ale w tym nie mogę sobie poradzić, a więc mam 2 skrypty:



  1. <?php
  2. if(isset($_POST['submit']))
  3. {
  4. $target = "../uploads/";
  5. $allowedExts = array("jpg", "jpeg");
  6. $extension = end(explode(".", $_FILES["file_upload"]["name"]));
  7. $target = $target . basename( $_FILES['file_upload']['name']);
  8. $date = date("Y-m-d H:i:s");
  9.  
  10. //Function to generate image thumbnails
  11. function make_thumb($src, $dest, $desired_width) {
  12.  
  13. /* read the source image */
  14. $source_image = imagecreatefromjpeg($src);
  15. $width = imagesx($source_image);
  16. $height = imagesy($source_image);
  17.  
  18. /* find the "desired height" of this thumbnail, relative to the desired width */
  19. $desired_height = floor($height * ($desired_width / $width));
  20.  
  21. /* create a new, "virtual" image */
  22. $virtual_image = imagecreatetruecolor($desired_width, $desired_height);
  23.  
  24. /* copy source image at a resized size */
  25. imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
  26.  
  27. /* create the physical thumbnail image to its destination with 100% quality*/
  28. imagejpeg($virtual_image, $dest,100);
  29.  
  30. }
  31.  
  32.  
  33.  
  34.  
  35.  
  36. $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to database");
  37. mysql_select_db($dbname) or die ("Error selecting the database");
  38.  
  39. //check for allowed extensions
  40. if ((($_FILES["file_upload"]["type"] == "image/jpg")|| ($_FILES["file_upload"]["type"] == "image/jpeg"))&& in_array($extension, $allowedExts))
  41. {
  42. $photoname = $_FILES["file_upload"]["name"];
  43. if (file_exists("../uploads/" . $photoname))
  44. {
  45. die( '<div class="error">Sorry <b>'. $photoname . '</b> already exists</div>');
  46. }
  47.  
  48. if(move_uploaded_file($_FILES['file_upload']['tmp_name'], $target))
  49. {
  50. $query = "INSERT INTO photos (photo_name,date_added) VALUES ('$photoname','$date')";
  51. mysql_query($query);
  52. $sql = "SELECT MAX(id) FROM photos";
  53. $max = mysql_query($sql);
  54. $row = mysql_fetch_array($max);
  55. $maxId = $row['MAX(id)'];
  56.  
  57. $type = $_FILES["file_upload"]["type"];
  58. switch($type)
  59. {
  60. case "image/jpeg":
  61. $ext = ".jpeg";
  62. break;
  63. case "image/jpg";
  64. $ext = ".jpg";
  65. break;
  66. }
  67.  
  68. //define arguments for the make_thumb function
  69. $source = "../uploads/".$photoname;
  70. $destination = "../thumbnails/thumb_". $maxId . $ext ."";
  71. //specify your desired width for your thumbnails
  72. $width = "482";
  73. //Finally call the make_thumb function
  74. make_thumb($source,$destination,$width);
  75.  
  76. $msg = '<div class="success">
  77. <b>Upload: </b>' . basename($photoname) . '<br />
  78. <b>Type: </b>' . $_FILES["file_upload"]["type"] . '<br />
  79. <b>Size: </b>' . ceil(($_FILES["file_upload"]["size"] / 1024)) . 'Kb<br />
  80. </div>';
  81. }
  82. else
  83. {
  84. $msg = '<div class="error">Sorry, there was a problem uploading your file.</div>';
  85. }
  86. }
  87. else
  88. {
  89. $msg = '<div class="error">The file type you are trying to upload is not allowed!</div>';
  90. }
  91. }
  92. ?>
  93. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  94. <html xmlns="http://www.w3.org/1999/xhtml">
  95. <head>
  96. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  97. <title>Upload Image</title>
  98. <link href="../css/style.css" rel="stylesheet" type="text/css" />
  99. </head>
  100.  
  101. <body>
  102. <H3>Upload Images Here</H3>(<a href="../" target="_blank">View Gallery</a>)
  103. <div id="upload">
  104. <?php echo $msg; ?>
  105. <form action="" method="post" enctype="multipart/form-data">
  106. <label for="file">Filename:</label>
  107. <input type="text" name="name"/><BR/>
  108. <input type="file" name="file_upload" id="upload_file" />
  109. <input type="submit" name="submit" value="Upload" />
  110. </form>
  111. </div>
  112. </body>
  113. </html>

Pytanie moje brzmi w którym miejscu wstawić skrypt z biblioteki do skryptu nr 2 tak aby zmniejszało obrazki przy uploadzie? No i oczywiście zamiast konkretnej nazwy pliku trzeba wstawić zmienną.

Proszę o pomoc, pozdrawiam.
mar1aczi
W drugim listingu, masz funkcję, która generuje miniatury - zwie się "make_thumb", co zatem chcesz uzyskać?
aldzik
Chcę uzyskać to aby przesyłany plik np 1920x1080 zmniejszało do 1024x768.
mar1aczi
Zatem podaj odpowiednio trzeci parametr funkcji make_thumb (linia 76 Twojego drugiego listingu).
aldzik
Ale w tym miejscu zmniejsza tylko do wyświetlenia a gdy wejdę w bezpośredni link to wyświetla się nadal z tą sama wielkością - a co do parametru masz na myśli dodaniu height?
Nie da się zrobić tak aby na serwerze zapisywał w zmienionej wielkości? Czy po prostu on musi zapisywac w 2? - takiej jak przesłałem i w tej zmienionej (thumbnails)
mar1aczi
Funkcja make_thumb tworzy i zapisuje miniatury poprzez -> imagejpeg.
Poświęć chwilę swojego czasu na zrozumienie kodu.
aldzik
Dobra już wiem jak dzięki bardzo. Możesz mi powiedzieć jak w tym skrypcie zmodyfikować aby wprowadzać nazwę pliku uploadowanego przez pole tekstowe?
mar1aczi
W formularzu do wysyłania pliku potrzebujesz dodatkowe pole i to co zostanie przekazane w tym polu (po uprzednim sprawdzeniu oczywiście) podstawić do linii 7 drugiego listingu w miejsce "basename( $_FILES['file_upload']['name'])".
aldzik
Czyli tworze sobie przykładowy formularz: do listingu nr 2 który zamieszczam w tym samym pliku za linią 95, a w formularzu zawieram pole tekstowe o nazwie: name(bo w 7 linii tak się nazywa)
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <title>formularz/title>
  3. </head>
  4.  
  5. <div id="upload">
  6. <?php echo $msg; ?>
  7. <form action="" method="post" enctype="multipart/form-data">
  8. <label for="file">Filename:</label>
  9. <input type="text" name="name"/>
  10. <input type="file" name="file_upload" id="upload_file" />
  11. <input type="submit" name="submit" value="Upload" />
  12. </form>
  13. </div>
  14. </body>
  15. </html>


tak by to miało wyglądać?


mar1aczi
Może bardziej filename wink.gif Potem nazwę pliku masz w $_POST['filename'].
aldzik
Nie no nie wiem jak to zrobić nic mi nie działa... kombinowałem na kilka sposobów i nic.
mar1aczi
Pokaż całość, co udało Ci się poskładać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.