Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] miniaturki o okreslonej szerokości bez zniekształceń, z wyborem zdjęcia
baśka
post 19.01.2007, 13:57:21
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


cześć. jestem tu nowa (czyt. raczej amatorka :-) ) i mam problem:

otóż mam skrypt który tworzy mi miniaturki. jak zrobić ,żeby skrypt ten zamieniał na miniaturki pliki gif, jpeg, jpg, png i żeby szerokość zdjęcia miała 250 pikseli ? oraz żebym mogła wybrać do którego pliku dorobić miniaturkę?questionmark.gif

  1. <?php
  2. $img = imagecreatefromjpeg("foto.jpg");
  3. $width = imagesx($img);
  4. $height = imagesy($img);
  5. $width_mini = $width * 0.1;
  6. $height_mini = $height * 0.1;
  7. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  8. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  9. if(imagejpeg($img_mini, "foto_mini.jpg", 80))
  10. print 'ok';
  11. else
  12. print'nie udało się';
  13. imagedestroy($img);
  14. imagedestroy($img_mini);
  15. ?>



jak na razie najwazniejsze jest dla mnie zeby zmiejszało do ustalonej szerokosci a wiecej to juz jako bonus tongue.gif

Ten post edytował baśka 19.01.2007, 14:19:18


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 14:22:23
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


  1. <?php
  2. $width_mini = 250;
  3. ?>
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 14:26:26
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Cytat(Amorph @ 19.01.2007, 14:22:23 ) *
  1. <?php
  2. $width_mini = 250;
  3. ?>


to powoduje Parse error.


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 14:40:19
Post #4





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Skrypt sprawdzilem...
Dziala na 100%
smile.gif
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 14:41:41
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Cytat(Amorph @ 19.01.2007, 14:40:19 ) *
Skrypt sprawdzilem...
Dziala na 100%
smile.gif

podstawiłam to co mi napisałes ale zdjecię się rozciągneło i zdeformowało. Chodziło mi zeby symetrycznie zmiejszyło mi tez wysokość.

Ten post edytował baśka 19.01.2007, 14:48:29


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
maryaan
post 19.01.2007, 14:48:47
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


dosyc niedawno byl temat o zmniejszaniu fotek, polecam poszukac

Ten post edytował maryaan 19.01.2007, 14:49:32


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 14:52:07
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Cytat(maryaan @ 19.01.2007, 14:48:47 ) *
dosyc niedawno byl temat o zmniejszaniu fotek, polecam poszukac


no ale tam są bardzo skomplikowane kody a ja to muszę później wytłumaczyć koleżance :/


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 14:52:34
Post #8





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Skoro masz szerokosc i wysokosc zdjecia oraz szerokosc po przeskalowaniu(250);
wylicz sobie stosunek oryginalnej szerokosci do zmiejszonej(250)
i o ten wlasnie wynik pomnoz wysokosc poczatkowa.
Zamiast:
  1. <?php
  2. $height_mini = $height * $wynikObliczen;
  3. ?>
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 14:55:31
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Cytat(Amorph @ 19.01.2007, 14:52:34 ) *
Skoro masz szerokosc i wysokosc zdjecia oraz szerokosc po przeskalowaniu(250);
wylicz sobie stosunek oryginalnej szerokosci do zmiejszonej(250)
i o ten wlasnie wynik pomnoz wysokosc poczatkowa.
Zamiast:
  1. <?php
  2. $height_mini = $height * $wynikObliczen;
  3. ?>


z moich obliczen wynika to:

  1. <?php
  2. $wynikObliczen = ($width_mini * $height)/$width;
  3. ?>

jednak pokazuje:
Fatal error: Allowed memory size of 8388608 bytes exhausted at (null):0 (tried to allocate 1000 bytes) in


biggrin.gif:D:D z matematyki jestem genialna ale nie aż tak... Czy mogłbyś mi to napisać skoro nie stwarzałoby to dla Ciebie problemu. bardzo prosze :*

Ten post edytował baśka 19.01.2007, 15:16:09


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 15:17:41
Post #10





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


  1. <?php
  2. $width = imagesx($img);
  3. $height = imagesy($img);
  4. $width_mini = 250;
  5. $wynikObliczen = round(($height*$width_mini)/$width)/1000;
  6. $height_mini = $height * $wynikObliczen;
  7. ?>


A co do twoich obliczen. Wez przykladowo obraz 1000x1000
250*1000/1000=250
i teraz:
$height_mini = $height * $wynikObliczen;
$height_mini = 1000 * 250;
Niezle.

Ten post edytował Amorph 19.01.2007, 15:18:44
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 15:23:05
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Cytat(Amorph @ 19.01.2007, 15:17:41 ) *
  1. <?php
  2. $width = imagesx($img);
  3. $height = imagesy($img);
  4. $width_mini = 250;
  5. $wynikObliczen = round(($height*$width_mini)/$width)/1000;
  6. $height_mini = $height * $wynikObliczen;
  7. ?>


A co do twoich obliczen. Wez przykladowo obraz 1000x1000
250*1000/1000=250
i teraz:
$height_mini = $height * $wynikObliczen;
$height_mini = 1000 * 250;
Niezle.



a teraz po Twojej poprawce obrazek jest zniekształcony. W orginale jest wyzszy niz szerszy a teraz odwrotnie. widze ,że to jest ciężka sprawa.

gdy wstawiłam 500 zamiast 1000 to wyświetla mi chyba dobrze. to było drogą prób i błędów. a moze mi ktos powiedziec dlaczego akurat teraz jest dobrze questionmark.gif i jak zrobić to samo dla innych plików graficznych?? bo to chyba tylko dla jpga tak questionmark.gif


mój cały kod:
  1. <?php
  2. $img = imagecreatefromjpeg("aaa.jpg");
  3. $width = imagesx($img);
  4. $height = imagesy($img);
  5. $width_mini = 250;
  6. $wynikObliczen = round(($height*$width_mini)/$width)/500;
  7. $height_mini = $height * $wynikObliczen;
  8. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  9. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  10. $mini_img = "aaa_mini.jpg";
  11. if(imagejpeg($img_mini, $mini_img, 98))
  12. {
  13. print 'zrobiono miniaturke';
  14. }
  15. else
  16. {print'nie udało się';}
  17. imagedestroy($img);
  18. imagedestroy($img_mini);
  19. ?>
[b]

Ten post edytował baśka 19.01.2007, 15:38:17


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 15:40:56
Post #12





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Ehh...
Zapracowany jestem i na szybko pisze...
Poprawiony:
  1. <?php
  2. $wynikObliczen = round(($height*$width_mini)/$width);
  3. $height_mini = $wynikObliczen;
  4. ?>
Go to the top of the page
+Quote Post
maryaan
post 19.01.2007, 15:47:22
Post #13





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


w skrocie to wyglada tak:
masz duze zdjecie
masz max wymiary miniaturki (zalozmy 150x150)
obliczasz stosunek szerowkosci do wysokosci (duzego zdjecia) = es
teraz jesli wyjdzie mniejszy od jednosci to znaczy ze wysokosc miniatury bedzie rowna 150 a szerokosc 150*es
jesli jednak es jest wieksze od 1 to znaczy ze obrazek jest szerszy niz wyzszy wiec miniatura bedzie miala szerokosc 150 a wysokosc 150/es

teraz sobie zakoduj albo poszukaj bo na pewno w ten sposob sa pisane skrypty zeby wykrywac ktory bok zdjecia jest dluzszy, mozna by to rozbudowac o miniature niekwadratowa ale jak to masz komus tlumaczyc to lepiej przy kwadracie zostac


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 15:52:06
Post #14





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


@maryaan
jesli chcesz nabijac posty do daruj sobie taka pomoc
przeczytaj, ew. przetestuj co bylo wyzej.

Matematyka:
800 250
--- = ----
600 x

800x=250*600\:800
x=187,5
I masz wys obrazka... a nie zgadywanie czy es wieksze od 1 czy mniejsze.

Ten post edytował Amorph 19.01.2007, 15:55:53
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 15:56:34
Post #15





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


napotkałam na kolejny mały problem:

mam w zmiennej $link ścieżkę do pliku np. obrazki/obrazek.jpg

co zrobić zeby dodało na koniec nazwy pliku _mini questionmark.gif czyli obrazki/obrazek_mini.jpg


to mi dodaje ale dopiero po rozszerzeniu czyli obrazki/obrazek.jpg_mini sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif
  1. <?php
  2. $mini_img = "obrazek/".$nazwa."_mini";
  3. ?>


problem rozwiązany: dodałam mini_ przed nazwą biggrin.gif

a wracajac do tematu: czy można dodawać także pliki graficzne z innym rozszerzeniem?questionmark.gif?

Ten post edytował baśka 19.01.2007, 16:07:39


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post
maryaan
post 19.01.2007, 16:06:39
Post #16





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


Cytat(Amorph @ 19.01.2007, 15:52:06 ) *
a nie zgadywanie czy es wieksze od 1 czy mniejsze.
if($szerokosc/$wysokosc > 1) nazywasz zgadywaniem? lol Twoj matematyczny sposob jest super, pod warunkiem ze kolezanka nie uzyje tych miniaturek do zrobienia galerii, bo np przeskalowane Twoim sposobem zdjecie 500x1000 pieknie jej ta gaerie rozwali


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 16:13:13
Post #17





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Nie przesadzaj juz...
Sproboj poszukac smile.gif
  1. <?php
  2. $plik="zdjecie.jpg";
  3. $data=explode('.',$plik);
  4. $nowy_plik=$data[0]."_mini.".$data[1];
  5. ?>

Ostatni raz ! smile.gif

@maryaan
Czytaj co sie pisze!!!
Skrypt mial przeskalowywac obrazki do mniejszych rozmiarow z ZACHOWANIEM PROPORCJI.
Nie ma innej proporcji
500x1000 da 250x500. stosunek 1:2 w obydwu przypadkach.
Go to the top of the page
+Quote Post
maryaan
post 19.01.2007, 16:30:10
Post #18





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


umiejetnosc czytania ze zrozumieniem to raczej Tobie by sie przydala... czy 125x250 juz nie jest proporcja 1:2?

wracajac do tematu
> oraz żebym mogła wybrać do którego pliku dorobić miniaturkę?questionmark.gif

pakujesz calosc kodu do funkcji np miniatura($costam) gdzie argumentem bedize Twoje wybrane zdjecie. Teraz w tresci zamiast nazwy pliku ze zdjeciem uzywasz zmiennej $costam i to w zasadzie wszystko. Miniature zdjecia ala.jpg tworzysz za pomoca miniatura('ala.jpg'), zdjecia puszkaSardynek.jpg - miniatura('puszkaSardynek.jpg') itd


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
Amorph
post 19.01.2007, 16:44:16
Post #19





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Cytat
cześć. jestem tu nowa (czyt. raczej amatorka :-) ) i mam problem:

otóż mam skrypt który tworzy mi miniaturki. jak zrobić ,żeby skrypt ten zamieniał na miniaturki pliki gif, jpeg, jpg, png i żeby szerokość zdjęcia miała 250 pikseli ? oraz żebym mogła wybrać do którego pliku dorobić miniaturkę?questionmark.gif

obraz okresla wymiar: szerokoscxwysokosc.
125x250... gdzie u ciebie szerokosc ma 250 questionmark.gif?

Jak dla mnie EoT
Go to the top of the page
+Quote Post
baśka
post 19.01.2007, 16:45:00
Post #20





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.01.2007

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


Nie drapcie sie chłopcy!!!

a mam ostatnie pytanie"

mam nadzieje ze nie marudze za bardzo . A co bedzie w przypadku kiedy zdjecie bedzie mniejsze niz te 250pikseli questionmark.gif to mi chyba rozszerzy... jak zrobic zeby mi nie rozszerzało gdy zdjecie ma szerokosc mniejsza niz 250 pikseli questionmark.gif


--------------------
uwaga amatorka !!! tylko spokojnie ;-)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 12.06.2025 - 12:45