Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP Thumb - wykorzystanie zmiany rozmiaru obrazka, Zmiana rozmiaru obrazka przy uplaodzie
aldzik
post 20.02.2013, 12:22:48
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował aldzik 20.02.2013, 16:19:56
Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 12:55:50
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


W drugim listingu, masz funkcję, która generuje miniatury - zwie się "make_thumb", co zatem chcesz uzyskać?


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
aldzik
post 20.02.2013, 13:31:40
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


Chcę uzyskać to aby przesyłany plik np 1920x1080 zmniejszało do 1024x768.
Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 13:41:03
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Zatem podaj odpowiednio trzeci parametr funkcji make_thumb (linia 76 Twojego drugiego listingu).

Ten post edytował mar1aczi 20.02.2013, 13:41:42


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
aldzik
post 20.02.2013, 13:49:35
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 14:15:36
Post #6





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Funkcja make_thumb tworzy i zapisuje miniatury poprzez -> imagejpeg.
Poświęć chwilę swojego czasu na zrozumienie kodu.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
aldzik
post 20.02.2013, 15:14:21
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


Dobra już wiem jak dzięki bardzo. Możesz mi powiedzieć jak w tym skrypcie zmodyfikować aby wprowadzać nazwę pliku uploadowanego przez pole tekstowe?
Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 15:22:39
Post #8





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


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'])".


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
aldzik
post 20.02.2013, 15:36:29
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


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ć?


Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 16:01:35
Post #10





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Może bardziej filename wink.gif Potem nazwę pliku masz w $_POST['filename'].


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
aldzik
post 20.02.2013, 16:05:12
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.01.2011

Ostrzeżenie: (0%)
-----


Nie no nie wiem jak to zrobić nic mi nie działa... kombinowałem na kilka sposobów i nic.
Go to the top of the page
+Quote Post
mar1aczi
post 20.02.2013, 19:57:59
Post #12





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Pokaż całość, co udało Ci się poskładać.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 10:14