Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML]Tworzenie miniaturki
-Gość-
post
Post #1





Goście







Witam,
chcialbym sie dowiedziec jak stworzyc miniaturke fotki. Mam skrypt ktory ulpoaduje fotki na serwer, ale jak zrobic zeby podczas uploadu tworzyl automatycznie miniaturke o nazwa : m_nazwapliku.jpg
Prosze o pomoc
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 22)
Piniek
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


zainteresuj sie GD w php (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
conix
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Nic z tego nie kapuje (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

Edit:
Gosc to ja ; D
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Pisane z palca, więc mógł wkraść się błąd.

  1. <?php
  2. $img = imagecreatefromjpeg('sciezka_do_obrazka'); // utworzenie obrazka na podstawie juz istniejacego
  3. $new_img = imagecreatetruecolor($new_width, $new_height); // utwozenie nowego obrazka
  4. imagecopyresampled($new_img, $img, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); // zmiana rozmiaru zaladowanego obrazka
  5. imagejpeg($new_img, 'sciezka_do_miniaturki'); // zapisanie miniaturki
  6. imagedestroy($new_img); // usuwanie smieci
  7.  
  8. /*
  9. $new_width, $new_height - szerokosc i iwysokosc miniaturki
  10. $old_width, $old_height - szerokosc i wysokosc oryginalnego obrazka
  11. */
  12. ?>


Użycie funkcji gwarantuje, że miniaturka będzie dobrej jakości.

Informacje na temat użytych funkcji znajdziesz w manualu. Pamiętaj, że GD jest bardzo pamięciożerne.

edit
Jeśli chcesz zrobić miniaturkę z gifa, użyj odpowiednich funkcji (znajdziesz je w manualu).

Ten post edytował batman 15.03.2008, 17:20:03
Go to the top of the page
+Quote Post
conix
post
Post #5





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Próbuje polaczyc to z tym:
  1. <?
  2. $uploaded = "uploady/". $_FILES['plik']['name'];
  3. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  4. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  5. echo 'Plik jest za duży';
  6. } else {
  7. move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded);
  8. echo "Operacja przebiegła pomyślnie";
  9. }
  10. } else {
  11. echo 'Błąd przy przesyłaniu danych!';
  12. }
  13. ?>


Ale nie idzie :/
Go to the top of the page
+Quote Post
PawelC
post
Post #6





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


  1. <?
  2. $uploaded = "uploady/". $_FILES['plik']['name'];
  3. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  4. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  5. echo 'Plik jest za duży';
  6. } else {
  7. move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded);
  8.  
  9. $img = imagecreatefromjpeg('sciezka_do_obrazka'); // utworzenie obrazka na podstawie juz istniejacego
  10. $new_img = imagecreatetruecolor($new_width, $new_height); // utwozenie nowego obrazka
  11. imagecopyresampled($new_img, $img, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); // zmiana rozmiaru zaladowanego obrazka
  12. imagejpeg($new_img, 'sciezka_do_miniaturki'); // zapisanie miniaturki
  13. imagedestroy($new_img); // usuwanie smieci
  14. echo "Operacja przebiegła pomyślnie";
  15.  
  16.  
  17. }
  18. } else {
  19. echo 'Błąd przy przesyłaniu danych!';
  20. }
  21. ?>
Go to the top of the page
+Quote Post
conix
post
Post #7





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Zabawny jestes, ale tyle tez potrafie.
Co mam wpisac w
'sciezka_do_obrazka
skoro ma brac aktualnie uploadowany obrazek?
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Wstaw kod, który napisałem między wiersz 7 i 8. Zamiast 'sciezka_do_obrazka' użyj zmiennej $uploaded, a zamiast 'sciezka_do_miniaturki' użyj zmiennej $ulopady_thumb, która będzie miała postać:
  1. <?php
  2. $uploaded_thumb = "uploady/thumb_". $_FILES['plik']['name'];
  3. ?>
Go to the top of the page
+Quote Post
conix
post
Post #9





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Dupa, nie umie tego zrobic ;/
Go to the top of the page
+Quote Post
Piniek
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


to moze bys pokazal co do tej pory napislaes i gdzie masz blad albo problem bo jak narazie to "chyba" czekasz na gotowca

Ten post edytował Piniek 15.03.2008, 17:50:47
Go to the top of the page
+Quote Post
batman
post
Post #11





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Pojawiają jakieś błędy?
Masz włączone rozszerzenie GD?
Masz prawa do zapisu do katalogu, gdzie ładowane są zdjęcia i miniaturki?
Go to the top of the page
+Quote Post
conix
post
Post #12





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Po co mam pokazywać jak nie dziala :/
Po 2 na tym forum jest tak ze po kilkunastu minutach zawsze sie otrzymuje gotowca
PS. Niewiem jak dokladnie ma to wygladac

Ten post edytował conix 15.03.2008, 17:51:56
Go to the top of the page
+Quote Post
Piniek
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


no to wiedz ze na tym forum sie gotowcow nie daje (przuanjmniej nie powinno) a kod wklej bo coraz bardziej zaczynam myslec ze wcale nie probowales tego kodu napisac
Go to the top of the page
+Quote Post
conix
post
Post #14





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


  1. <?
  2. $uploaded_thumb = "uploady/thumb_". $_FILES['plik']['name'];
  3. $uploaded = "uploady/_". $_FILES['plik']['name'];
  4. $uploaded = "uploady/". $_FILES['plik']['name'];
  5. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  6. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  7. echo 'Plik jest za duży';
  8. } else {
  9. move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded);
  10.  
  11. $img = imagecreatefromjpeg('$uploaded'); // utworzenie obrazka na podstawie juz istniejacego
  12. $new_img = imagecreatetruecolor($new_width, $new_height); // utwozenie nowego obrazka
  13. imagecopyresampled($new_img, $img, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); // zmiana rozmiaru zaladowanego obrazka
  14. imagejpeg($new_img, '$uploaded_thumb'); // zapisanie miniaturki
  15. imagedestroy($new_img); // usuwanie smieci
  16. echo "Operacja przebiegła pomyślnie";
  17.  
  18.  
  19. }
  20. } else {
  21. echo 'Błąd przy przesyłaniu danych!';
  22. }
  23. ?>

I wywala tylko
Blad przy przesy...
Go to the top of the page
+Quote Post
Piniek
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


po pierwsze masz powtorzona zmienna
$uploaded;

a po drugie wychodzi na to ze to twoj kod wogule nie dziala bo tworznie minatur jest dopiero po pomyslnym wyslaniu pliku
Go to the top of the page
+Quote Post
batman
post
Post #16





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Czy wcześniej działało Ci wysyłanie obrazków, czy cały czas pojawiał się wspomniany komunikat?
Sprawdź, czy tak zadziała:
  1. <?php
  2. // ......
  3. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  4. echo 'Plik jest za duży';
  5. }
  6. else {
  7. if (move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded)) {
  8. // ......
  9. }
  10. else {
  11. echo 'blad';
  12. }
  13. }
  14. ?>
Go to the top of the page
+Quote Post
conix
post
Post #17





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


^^ blad
PS. Przeciez mozesz testowac u siebie, wiec po co kazesz mi testowac
Go to the top of the page
+Quote Post
PawelC
post
Post #18





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Po to żebyś się sam nauczył na przyszłość, radzić z takimi problemami.
Go to the top of the page
+Quote Post
Piniek
post
Post #19





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

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


Cytat(conix @ 15.03.2008, 18:01:54 ) *
^^ blad
PS. Przeciez mozesz testowac u siebie, wiec po co kazesz mi testowac

chodzi o twoje srodowisko pracy moze nie masz gd lub masz zablokowane jakies funkcje

Ten post edytował Piniek 15.03.2008, 18:04:45
Go to the top of the page
+Quote Post
batman
post
Post #20





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie każę, tylko sugeruję, poza tym SOA#1 (sprawdź na google co to znaczy).
A dlaczego u Ciebie nie działa? Nie wiem. Pewnie nie masz uprawnień do zapisu do wskazanego katalogu / katalog nie istnieje.
Jest jeszcze kilka rzeczy, której nie napisałeś/sprawdziłeś.
Czy formularz, z którego wysyłasz plik ma atrybut enctype="multipart/form-data" oraz czy w tablicy $_FILES w polu error jest jakaś wartość różna od zera.
Go to the top of the page
+Quote Post
conix
post
Post #21





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


Oto formularz:
  1. <form enctype="multipart/form-data" action="up.php" method="post">
  2. <input type="file" name="plik">
  3. <input type="submit" value="Wyślij na serwer">
  4. <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
  5. </form>


batman - wiec ktory kod u ciebie smiga?

Aktualny kod wyglada tak:
  1. <?php
  2. $uploaded_thumb = "uploady/thumb_". $_FILES['plik']['name'];
  3. $uploaded = "uploady/_". $_FILES['plik']['name'];
  4. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  5. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  6. if ($_FILES['plik']['size'] > 1024*1024*1024) {
  7. echo 'Plik jest za duży';
  8. }
  9.  
  10. if (move_uploaded_file($_FILES['plik']['tmp_name'],$uploaded)) {
  11.  $img = imagecreatefromjpeg('$uploaded'); // utworzenie obrazka na podstawie juz istniejacego
  12. $new_img = imagecreatetruecolor($new_width, $new_height); // utwozenie nowego obrazka
  13. imagecopyresampled($new_img, $img, 10, 10, 10, 10, $new_width, $new_height, $old_width, $old_height); // zmiana rozmiaru zaladowanego obrazka
  14. imagejpeg($new_img, '$uploaded_thumb'); // zapisanie miniaturki
  15. imagedestroy($new_img); // usuwanie smieci
  16. echo "Operacja przebiegła pomyślnie";
  17.  
  18.  
  19. }
  20. } else {
  21. echo 'blad';
  22. }
  23. }
  24. ?>

Zawsze wywala blad, katalogi sa, atrybuty tez
Go to the top of the page
+Quote Post
Lejto
post
Post #22





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


proszę
formularz:
  1. <FORM ACTION="dodaj.php" METHOD="POST" enctype="multipart/form-data">
  2. <input class=form9 type="file" name="obraz" size="67"><br>
  3. <INPUT name="send" TYPE="submit" class="form11" value="Wyślij">

dodaj.php
  1. <?php
  2. $typ_pliku = $_FILES['obraz']['type'];
  3.  
  4.  
  5.  
  6. switch($typ_pliku)
  7.  
  8. {
  9.  
  10. case 'image/jpeg':
  11.  
  12. $pref_gd = "jpeg";
  13.  
  14. break;
  15.  
  16. case 'image/png':
  17.  
  18. $pref_gd = "png";
  19.  
  20. break;
  21.  
  22.  case 'image/pjpeg':
  23.  
  24. $pref_gd = "jpeg";
  25.  
  26. break;
  27.  
  28. }
  29.  
  30.  
  31.  
  32.  
  33.  
  34. //koniec ustala typ mime pliku i tworzy odpowiedni prefix dla funkcji GD
  35.  
  36.  
  37.  
  38.  
  39.  
  40. $nazwa1 = Date("His");//wykorzystanie daty do wygenerowania nowej nazwy dla pliku
  41.  
  42. $nazwa2 = $_FILES['obraz']['name'];//pobranie nazwy pliku z tablicy
  43.  
  44. $nazwa_zmieniona = "$nazwa1$nazwa2";//połączenie daty z nazwą pliku
  45.  
  46.  
  47.  
  48. //zamienia polskie litery z języczkami aby nie znalazły się w nazwie fotki
  49.  
  50. $nazwa_zmieniona = strtolower($nazwa_zmieniona);
  51.  
  52. $nazwa_zmieniona = ereg_replace(" ","_",$nazwa_zmieniona);
  53.  
  54. $nazwa_zmieniona = ereg_replace("ą","a",$nazwa_zmieniona);
  55.  
  56. $nazwa_zmieniona = ereg_replace("ę","e",$nazwa_zmieniona);
  57.  
  58. $nazwa_zmieniona = ereg_replace("ź","z",$nazwa_zmieniona);
  59.  
  60. $nazwa_zmieniona = ereg_replace("ż","z",$nazwa_zmieniona);
  61.  
  62. $nazwa_zmieniona = ereg_replace("ó","o",$nazwa_zmieniona);
  63.  
  64. $nazwa_zmieniona = ereg_replace("ł","l",$nazwa_zmieniona);
  65.  
  66. $nazwa_zmieniona = ereg_replace("ś","s",$nazwa_zmieniona);
  67.  
  68. $nazwa_zmieniona = ereg_replace("Ś","s",$nazwa_zmieniona);
  69.  
  70. $nazwa_zmieniona = ereg_replace("ć","c",$nazwa_zmieniona);
  71.  
  72.  
  73.  
  74. $file = "./obrazy/".$nazwa_zmieniona.""; //dodaje adres i nazwę zdjęcia do zmiennej, która jet także wykorzystywana podczas
     tworzenia miniatury w pliku create_min
  75.  
  76.  
  77.  
  78. move_uploaded_file($_FILES['obraz']['tmp_name'],"./obrazy/".$nazwa_zmieniona);//wgrywa plik na serwer
  79.  
  80.  
  81.  
  82.  
  83.  
  84. chmod($file, 0755);
  85.  
  86.  
  87.  
  88. if (file_exists("./obrazy/".$nazwa_zmieniona)) { include ("create_min.php");} //tworzy
  89. ?>

i create_min.php
  1. <?php
  2. $obrazek_minn = "$nazwa_zmieniona";
  3.  
  4. $max_width = 150;//default 150
  5.  
  6. $max_height = 113;//default 300
  7.  
  8. $size = @getimagesize($file);
  9.  
  10. $width = $size[0];
  11.  
  12. $height = $size[1];
  13.  
  14. $x_ratio = $max_width / $width;
  15.  
  16. $y_ratio = $max_height / $height;
  17.  
  18. if(($width <= $max_width) && ($height <= $max_height))
  19.  
  20. {
  21.  
  22.  $tn_width = $width;
  23.  
  24.  $tn_height = $height;
  25.  
  26. }
  27.  
  28. else if(($x_ratio * $height) < $max_height)
  29.  
  30. {
  31.  
  32.  $tn_height = ceil($x_ratio * $height);
  33.  
  34.  $tn_width = $max_width;
  35.  
  36. }
  37.  
  38. else
  39.  
  40. {
  41.  
  42.  $tn_width = ceil($y_ratio * $width);
  43.  
  44.  $tn_height = $max_height;
  45.  
  46. }
  47.  
  48.  
  49.  
  50. $func_plus_prefix_1 = "ImageCreateFrom".$pref_gd;
  51.  
  52. $func_plus_prefix_2 = "image".$pref_gd;
  53.  
  54.  
  55.  
  56. $src = @$func_plus_prefix_1($file);
  57.  
  58. $dst = @imagecreatetruecolor($tn_width, $tn_height);
  59.  
  60. @imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
  61.  
  62. //Header('Content-type: image/jpeg');
  63.  
  64. @$func_plus_prefix_2($dst, "./miniatury/".$obrazek_minn, 100);
  65.  
  66.  
  67.  
  68. //koniec tworzenia miniatury
  69. ?>

na 100% działa
Go to the top of the page
+Quote Post
conix
post
Post #23





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 8.02.2008

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


thx (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdro
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 9.10.2025 - 20:04