Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z zapisaniem zdjęcia ze zmienioną wielkością
Forum PHP.pl > Forum > Przedszkole
goofynow
Witam mam problem. Chciałem aby dodawane zdjęcia zmieniało sie na przeliczona wielkość ,a i tak sie zapisuje jako orginalna wielkość. Więc co robie źle? Manuala przglądałem i nadal nie mam pojęcia o co biega.

  1. if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
  2. $ImageName)) {
  3.  
  4. // pobranie informacji na temat umieszczonego obrazu
  5. list($width, $height, $type, $attr) = getimagesize($ImageName);
  6.  
  7.  
  8. if ($type > 3) {
  9. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " .
  10. "PNG.<br>";
  11. echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie.";
  12. } else {
  13.  
  14.  
  15. // wstawienie informacji w tabeli images
  16.  
  17. $insert = "INSERT INTO img
  18. (img_nazwa, img_date, img_fot, img_min,img_kat)
  19. VALUES
  20. ('$img_nazwa', '$today', '$img_fot', '$img_min', '$img_kat')";
  21. $insertresults = mysql_query($insert)
  22.  
  23. $lastpicid = mysql_insert_id();
  24.  
  25. $newfilename = $ImageDir . $lastpicid . ".jpg";
  26.  
  27. // przeliczenie wielkości zdjęcia
  28. $max_width = 1024;
  29. $max_height = 1024;
  30.  
  31. $new_width = $max_width;
  32. $ratio = $max_width / $width;
  33. $new_height = $height * $ratio;
  34.  
  35.  
  36. if ($type == 2) {
  37. rename($ImageName, $newfilename);
  38. } else {
  39. if ($type == 1) {
  40. $image_old = imagecreatefromgif($ImageName);
  41. } elseif ($type == 3) {
  42. $image_old = imagecreatefrompng($ImageName);
  43. }
  44. // skonwertuj obraz do formatu JPG
  45. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  46. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  47. imagejpeg($image_jpg, $newfilename);
  48. imagedestroy($image_old);
  49. imagedestroy($image_jpg);
  50. }
jaslanin
a gdzie jest atrybut $destination funkcji http://fr2.php.net/move_uploaded_file

  1. if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
  2. $ImageName)) {


$ImageName - nie powinno być puste
goofynow
To jest cały kod i zdjęcie się dodaje ale o orginalnych rozmiarach a powinno pomniejszone.

  1. <?php
  2. require('conn.php');
  3. require_once 'http.php';
  4.  
  5. // udostępnienie zmiennych
  6. $img_nazwa = $_POST['img_nazwa'];
  7. $img_fot = "fot/";
  8. $img_min = "fot/min/";
  9. $image_tempname = $_FILES['image_filename']['name'];
  10. $today = date("Y-m-d");
  11. $img_kat = $_POST['kategorie'];
  12.  
  13.  
  14.  
  15. // umieszczenie obrazu i sprawdzenie jego formatu
  16. $ImageDir = "fot/";
  17.  
  18.  
  19. // folder minaturek
  20. $ImageThumb = $ImageDir . "min/";
  21.  
  22.  
  23. $ImageName = $ImageDir . $image_tempname;
  24.  
  25. if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
  26. $ImageName)) {
  27.  
  28. // pobranie informacji na temat umieszczonego obrazu
  29. list($width, $height, $type, $attr) = getimagesize($ImageName);
  30.  
  31.  
  32. if ($type > 3) {
  33. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " .
  34. "PNG.<br>";
  35. echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie.";
  36. } else {
  37.  
  38.  
  39. // wstawienie informacji w tabeli images
  40.  
  41. $insert = "INSERT INTO img
  42. (img_nazwa, img_date, img_fot, img_min,img_kat)
  43. VALUES
  44. ('$img_nazwa', '$today', '$img_fot', '$img_min', '$img_kat')";
  45. $insertresults = mysql_query($insert)
  46.  
  47. $lastpicid = mysql_insert_id();
  48.  
  49. $newfilename = $ImageDir . $lastpicid . ".jpg";
  50.  
  51. // przeliczenie wielkości zdjęcia
  52. $max_width = 1024;
  53. $max_height = 1024;
  54.  
  55. $new_width = $max_width;
  56. $ratio = $max_width / $width;
  57. $new_height = $height * $ratio;
  58.  
  59.  
  60. if ($type == 2) {
  61. rename($ImageName, $newfilename);
  62. } else {
  63. if ($type == 1) {
  64. $image_old = imagecreatefromgif($ImageName);
  65. } elseif ($type == 3) {
  66. $image_old = imagecreatefrompng($ImageName);
  67. }
  68. // skonwertuj obraz do formatu JPG
  69. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  70. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  71. imagejpeg($image_jpg, $newfilename);
  72. imagedestroy($image_old);
  73. imagedestroy($image_jpg);
  74. }
  75.  
  76. $newthumbname = $ImageThumb . $lastpicid . ".jpg";
  77.  
  78. // pobierz wymiary miniaturki
  79. $thumb_width = $width * 0.10;
  80. $thumb_height = $height * 0.10;
  81.  
  82. // utwórz miniaturkę
  83. $largeimage = imagecreatefromjpeg($newfilename);
  84. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  85. imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0,
  86. $thumb_width, $thumb_height, $width, $height);
  87. imagejpeg($thumb, $newthumbname);
  88. imagedestroy($largeimage);
  89. imagedestroy($thumb);
  90.  
  91. }
jaslanin
teraz widzę o co chodzi, nie pomniejsza Ci plików jpg ponieważ dla plikom jpg tylko zmieniasz nazwę:

  1. if ($type == 2) {
  2. rename($ImageName, $newfilename);
  3. } else {
  4. if ($type == 1) {
  5. $image_old = imagecreatefromgif($ImageName);
  6. } elseif ($type == 3) {
  7. $image_old = imagecreatefrompng($ImageName);
  8. }
  9. // skonwertuj obraz do formatu JPG
  10. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  11. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  12. imagejpeg($image_jpg, $newfilename);
  13. imagedestroy($image_old);
  14. imagedestroy($image_jpg);
  15. }


  1. if ($type == 2) {
  2. rename($ImageName, $newfilename);
  3. } else {


a kod pomniejszający napisany później nie jest uruchamiany

dodatkowo jeszcze jak najpierw pomniejszasz obrazek a potem robisz z pomniejszonego miniaturkę, to w funkcji imagecopyresampled musisz zmienić źródłową długość i źródłową wysokość na te ze źródłowego obrazka bo inaczej będziesz miał czarne paski w miniaturce

tj musisz to zmienić tak:

  1. // utwórz miniaturkę
  2. $largeimage = imagecreatefromjpeg($newfilename);
  3. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  4. imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
  5. imagejpeg($thumb, $newthumbname);
  6. imagedestroy($largeimage);
  7. imagedestroy($thumb);


albo robić miniaturkę z oryginalnego obrazka który był uploadowany

Tu masz ostateczny działający testowy kod który zrobiłem:

  1. <form action='' method='POST' enctype='multipart/form-data'>
  2.  
  3. <input name='image_filename' type='file'>
  4. <input type='submit' value='wyslij'>
  5.  
  6. </form>
  7.  
  8. <?php
  9. // udostępnienie zmiennych
  10. $img_nazwa = 'asd.jpg';
  11. $img_fot = "fot/";
  12. $img_min = "fot/min/";
  13. $image_tempname = $_FILES['image_filename']['name'];
  14. $today = date("Y-m-d");
  15.  
  16.  
  17.  
  18. // umieszczenie obrazu i sprawdzenie jego formatu
  19. $ImageDir = "fot/";
  20.  
  21.  
  22. // folder minaturek
  23. $ImageThumb = $ImageDir . "min/";
  24.  
  25.  
  26. $ImageName = $ImageDir . $image_tempname;
  27.  
  28. if (move_uploaded_file($_FILES['image_filename']['tmp_name'], $ImageName)) {
  29.  
  30. // pobranie informacji na temat umieszczonego obrazu
  31. list($width, $height, $type, $attr) = getimagesize($ImageName);
  32.  
  33.  
  34. if ($type > 3) {
  35. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " .
  36. "PNG.<br>";
  37. echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie.";
  38. } else {
  39.  
  40.  
  41. // wstawienie informacji w tabeli images
  42.  
  43.  
  44. $lastpicid = 55;
  45.  
  46. $newfilename = $ImageDir . $lastpicid . ".jpg";
  47.  
  48. // przeliczenie wielkości zdjęcia
  49. $max_width = 1024;
  50. $max_height = 1024;
  51.  
  52. $new_width = $max_width;
  53. $ratio = $max_width / $width;
  54. $new_height = $height * $ratio;
  55.  
  56.  
  57. if (in_array($type, array(1, 2, 3))) {
  58. switch ($type) {
  59. case 1:
  60. $image_old = imagecreatefromjpeg($ImageName);
  61. break;
  62. case 2:
  63. $image_old = imagecreatefromjpeg($ImageName);
  64. break;
  65. case 3:
  66. $image_old = imagecreatefrompng($ImageName);
  67. break;
  68.  
  69. default:
  70. break;
  71. }
  72.  
  73. // skonwertuj obraz do formatu JPG
  74. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  75. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  76. imagejpeg($image_jpg, $newfilename);
  77. imagedestroy($image_old);
  78. imagedestroy($image_jpg);
  79. }
  80.  
  81.  
  82. $newthumbname = $ImageThumb . $lastpicid . ".jpg";
  83.  
  84. // pobierz wymiary miniaturki
  85. $thumb_width = $width * 0.10;
  86. $thumb_height = $height * 0.10;
  87.  
  88. // utwórz miniaturkę
  89. $largeimage = imagecreatefromjpeg($newfilename);
  90. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  91. imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
  92. imagejpeg($thumb, $newthumbname);
  93. imagedestroy($largeimage);
  94. imagedestroy($thumb);
  95. }
  96. }
  97. ?>


(wywaliłem z niego db i ustawiłem parę zmiennych ale ogólne działanie jest widoczne)

Przesyłam jeszcze raz kod bo zauważyłem że źle ustawiłem pliki gif, a szybka edycja poprzedniego postu nie działa poprawnie

  1. <form action='' method='POST' enctype='multipart/form-data'>
  2.  
  3. <input name='image_filename' type='file'>
  4. <input type='submit' value='wyslij'>
  5.  
  6. </form>
  7.  
  8. <?php
  9. // udostępnienie zmiennych
  10. $img_nazwa = 'asd.jpg';
  11. $img_fot = "fot/";
  12. $img_min = "fot/min/";
  13. $image_tempname = $_FILES['image_filename']['name'];
  14. $today = date("Y-m-d");
  15.  
  16.  
  17.  
  18. // umieszczenie obrazu i sprawdzenie jego formatu
  19. $ImageDir = "fot/";
  20.  
  21.  
  22. // folder minaturek
  23. $ImageThumb = $ImageDir . "min/";
  24.  
  25.  
  26. $ImageName = $ImageDir . $image_tempname;
  27.  
  28. if (move_uploaded_file($_FILES['image_filename']['tmp_name'], $ImageName)) {
  29.  
  30. // pobranie informacji na temat umieszczonego obrazu
  31. list($width, $height, $type, $attr) = getimagesize($ImageName);
  32.  
  33.  
  34. if ($type > 3) {
  35. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " .
  36. "PNG.<br>";
  37. echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie.";
  38. } else {
  39.  
  40.  
  41. // wstawienie informacji w tabeli images
  42.  
  43.  
  44. $lastpicid = 55;
  45.  
  46. $newfilename = $ImageDir . $lastpicid . ".jpg";
  47.  
  48. // przeliczenie wielkości zdjęcia
  49. $max_width = 1024;
  50. $max_height = 1024;
  51.  
  52. $new_width = $max_width;
  53. $ratio = $max_width / $width;
  54. $new_height = $height * $ratio;
  55.  
  56.  
  57. if (in_array($type, array(1, 2, 3))) {
  58. switch ($type) {
  59. case 1:
  60. $image_old = imagecreatefromgif($ImageName);
  61. break;
  62. case 2:
  63. $image_old = imagecreatefromjpeg($ImageName);
  64. break;
  65. case 3:
  66. $image_old = imagecreatefrompng($ImageName);
  67. break;
  68.  
  69. default:
  70. break;
  71. }
  72.  
  73. // skonwertuj obraz do formatu JPG
  74. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  75. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  76. imagejpeg($image_jpg, $newfilename);
  77. imagedestroy($image_old);
  78. imagedestroy($image_jpg);
  79. }
  80.  
  81.  
  82. $newthumbname = $ImageThumb . $lastpicid . ".jpg";
  83.  
  84. // pobierz wymiary miniaturki
  85. $thumb_width = $width * 0.10;
  86. $thumb_height = $height * 0.10;
  87.  
  88. // utwórz miniaturkę
  89. $largeimage = imagecreatefromjpeg($newfilename);
  90. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  91. imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0, $thumb_width, $thumb_height, $new_width, $new_height);
  92. imagejpeg($thumb, $newthumbname);
  93. imagedestroy($largeimage);
  94. imagedestroy($thumb);
  95. }
  96. }
  97. ?>


goofynow
W sumie nie zauważyłem że mi odpisałeś ale sam też doszedłem dzięki Twoim podpowiedziom i coś takiego mi wyszło.

  1. // udostępnienie zmiennych
  2. $img_nazwa = $_POST['img_nazwa'];
  3. $img_fot = "fot/";
  4. $img_min = "fot/min/";
  5. $image_tempname = $_FILES['image_filename']['name'];
  6. $today = date("Y-m-d");
  7. $img_kat = $_POST['kategorie'];
  8.  
  9.  
  10.  
  11. // umieszczenie obrazu i sprawdzenie jego formatu
  12. $ImageDir = "fot/";
  13.  
  14.  
  15. // folder minaturek
  16. $ImageThumb = $ImageDir . "min/";
  17.  
  18.  
  19. $ImageName = $ImageDir . $image_tempname;
  20.  
  21. if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
  22. $ImageName)) {
  23.  
  24. // pobranie informacji na temat umieszczonego obrazu
  25. list($width, $height, $type, $attr) = getimagesize($ImageName);
  26.  
  27.  
  28. if ($type > 3) {
  29. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub " .
  30. "PNG.<br>";
  31. echo "Kliknij przycisk 'Wstecz' w przeglądarce i spróbuj ponownie.";
  32. } else {
  33.  
  34.  
  35. // wstawienie informacji w tabeli images
  36.  
  37. $insert = "INSERT INTO img
  38. (img_nazwa, img_date, img_fot, img_min,img_kat)
  39. VALUES
  40. ('$img_nazwa', '$today', '$img_fot', '$img_min', '$img_kat')";
  41. $insertresults = mysql_query($insert)
  42.  
  43. $lastpicid = mysql_insert_id();
  44.  
  45. $newfilename = $ImageDir . $lastpicid . ".jpg";
  46.  
  47.  
  48.  
  49. if ($type == 2) {
  50.  
  51. $max_width = 1024;
  52. $max_height = 1024;
  53.  
  54. $new_width = $max_width;
  55. $ratio = $max_width / $width;
  56. $new_height = $height * $ratio;
  57.  
  58. rename($ImageName, $newfilename);
  59. $image = imagecreatefromjpeg($newfilename);
  60. $imagenew = imagecreatetruecolor($new_width, $new_height);
  61. imagecopyresampled($imagenew, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  62. imagejpeg($imagenew, $newfilename);
  63. imagedestroy($image);
  64. imagedestroy($imagenew);
  65. } else {
  66. if ($type == 1) {
  67. $image_old = imagecreatefromgif($ImageName);
  68. } elseif ($type == 3) {
  69. $image_old = imagecreatefrompng($ImageName);
  70. }
  71. $max_width = 1024;
  72. $max_height = 1024;
  73.  
  74. $new_width = $max_width;
  75. $ratio = $max_width / $width;
  76. $new_height = $height * $ratio;
  77.  
  78. $image_jpg = imagecreatetruecolor($new_width, $new_height);
  79. imagecopyresampled($image_jpg, $image_old, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  80. imagejpeg($image_jpg, $newfilename);
  81. imagedestroy($image_old);
  82. imagedestroy($image_jpg);
  83.  
  84. }
  85.  
  86. $newthumbname = $ImageThumb . $lastpicid . ".jpg";
  87.  
  88.  
  89. $max_width = 1024;
  90. $max_height = 1024;
  91.  
  92. $new_width = $max_width;
  93. $ratio = $max_width / $width;
  94. $new_height = $height * $ratio;
  95.  
  96. // pobierz wymiary miniaturki
  97. $thumb_width = $new_width * 0.10;
  98. $thumb_height = $new_height * 0.10;
  99.  
  100. // utwórz miniaturkę
  101. $largeimage = imagecreatefromjpeg($newfilename);
  102. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  103. imagecopyresampled($thumb, $largeimage, 0, 0, 0, 0,
  104. $thumb_width, $thumb_height, $new_width, $new_height);
  105. imagejpeg($thumb, $newthumbname);
  106. imagedestroy($largeimage);
  107. imagedestroy($thumb);
  108.  
  109. }
  110.  
  111. }
  112. ?>


Wielkie dzieki Za pomoc
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.