Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Tworzenie miniaturek z funkcją wycinania kawałka zdjęcia
arekko
post 8.01.2015, 18:30:42
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Witam,
jestem nowicjuszem PHP. Tworze strony internetowe hobbistycznie już od kilku lat jednak teraz mam większe zlecenie i nie mogę sobie poradzić z galerią zdjęć. Chciałbym aby można było wysyłać zdjęcia za pomocą PHP na serwer do jednego pliku ( z tym sobie bym poradził ) a dodane zdjęcia automatycznie ten sam skrypt przetwarzał by na miniaturki i zapisywał w osobny folderze. Chciałbym aby miniaturki tworzone były w tym stylu: PHP zmniejsza obraz o 60% w szerokości i wysokości i wycina fragment zdjęcia przykładowo 300 px na 300 px. Tak aby każda minaturka była kwadratem a tym samym formacie. I z tym mam największy problem. Ktoś pomoże jak można tego dokonać?
Go to the top of the page
+Quote Post
bialko0019
post 8.01.2015, 22:34:09
Post #2





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

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


Witaj, po pierwsze kolego musisz mieć bibliotekę do zdjęć, np. GD - ona na serwerze prawie każdym jest zainstalowana, ( możesz sprawdzić za pomocą phpinfo() czy jest dostępna).

Musisz sobie ustalić kilka zmiennych, a dokładniej wielkości jaki jak szerokość obrazka, wysokość obrazka, obrazek jaki ma być wykradowany ( tez wysokosc i szerokosc ) oraz piksele w jakich chcesz je uciąć. Mając te dane, tworzysz sobie za pomocą funkcją imagecreatetruecolor(miniaturka_szer, miniaturka_wys). Oczywiście musisz również przed tem użyć podobnej funkcji - imagecreatefromjpeg(url do pliku jpg). Mając w zmiennych te rzeczy, używasz funkcji do m.in. kadrowania, czyli imagecopyresampled(). Następnie funkcją imagejpeg() możesz zapisać.

Pamiętaj, że w zależności od roszerzenia obrazka, możesz użyć innych funkcji podobnych.

Jeśli będziesz miał problem to napisz, pomogę i ułożysz taką funkcję w kilka minut ;-)



--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post
arekko
post 9.01.2015, 15:57:02
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Witam, dzięki za wskazówki. Ja jestem w PHP zielony więc i tak za dużo mi to nie pomoże więc byłbym wdzięczny jakbyś pomógł mi w napisaniu takiego czegoś. Chciałbym aby jeden skrypt obsługiwał wszystkie czynności z wysłaniem zdjęcia na serwer sobie bym poradził (wysyłane do folderu grafika) i w dalszej częsci chciałbym aby php z tych zdjęc automatycznie generował minaturki w folderze (minaturki) (zmniejszenie zdjęcia o np. 60% i docięcie zdjęcia do kwadratu) Dzięki za pomoc smile.gif
Go to the top of the page
+Quote Post
trueblue
post 9.01.2015, 16:03:36
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


A może jesteś mniej zielony na użycie prawie gotowca? http://wideimage.sourceforge.net/

Ten post edytował trueblue 9.01.2015, 16:03:50


--------------------
Go to the top of the page
+Quote Post
arekko
post 9.01.2015, 16:13:13
Post #5





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Raczej wolałbym coś co pisałem wyżej, chce żeby to było w miarę prosto napisane ale też działało smile.gif
Go to the top of the page
+Quote Post
trueblue
post 9.01.2015, 16:34:57
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


W jednej linijce kodu można wczytać obrazek, przeskalować, dociąć i zapisać.
Wydaje mi się, że to jest proste.


--------------------
Go to the top of the page
+Quote Post
arekko
post 9.01.2015, 16:36:48
Post #7





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Pomógłbyś jaki to kod?
Go to the top of the page
+Quote Post
trueblue
post 9.01.2015, 16:57:14
Post #8





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Na głównej stronie są 2 przykłady, wystarczy przemieszać je i utworzyć jeden.

A tu resize procentowy.
http://wideimage.sourceforge.net/wp-conten...ml#methodresize


--------------------
Go to the top of the page
+Quote Post
arekko
post 9.01.2015, 21:54:01
Post #9





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Okej dzięki, pokombinuje i napisze co mi z tego wyszło smile.gif

Uznałem że zacznę się uczyć PHP ale na razie potrzebuję coś na szybko więc znalazłem kod, który wysyła grafikę na serwer do jednego pliku tworzy miniaturkę w drugim pliku to jest wycinek z tego kodu o rozmiarach miniaturki:
case false: // zmniejszanie bezpośrednio do 180x160px
$nts = imagecreatetruecolor($config['thumbnail_width'], $config['thumbnail_height']);
imagecopyresized($nts, $ic, 0, 0, 0, 0, $config['thumbnail_width'], $config['thumbnail_height'], $is[0], $is[1]);
break;
default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej 180x160px
$width = $is[0];
$height = $is[1];
$ratio = $is[0] / $config['thumbnail_width'];
if ( $ratio > 1 )
{
$width = $config['thumbnail_width'];
$height = intval($is[1] / $ratio);
}
$ratio = $height / $config['thumbnail_height'];
if ( $ratio > 1 )
{
$width = intval($width / $ratio);
$height = $config['thumbnail_height'];
}
$nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem
imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break;
}
switch ( $extension ) // zapis do pliku
{
case 'gif':
imagegif($nts, $config['path_thumbnails'] . $filename);
break;
case 'png':
imagepng($nts, $config['path_thumbnails'] . $filename);
break;
default:
imagejpeg($nts, $config['path_thumbnails'] . $filename);
break;
}
imagedestroy($nts); // zniszczenie obrazka
return $config['path_thumbnails'] . $filename;
}
?>

Pomógłbyś mi zmodyfikować ten kod? Nie chce zeby zdjęcie w pionie były zniekształcane więc wymyśliłem aby zmniejszało zdjęcie do maksymalnej wysokości 275px i maksymalnej szerokość 275 px. Wtedy wytworzy nam sie zdjecie np. 275 px na 250 px i kod będzie ucinał je do 250 px na 250 px. I w ten sposób mam miniaturki w jednakowym kształcie i nie tracą one na zawartości zbyt wiele. Proszę o gotowy skrypt lub dokładnie instrukcje co zmienić. Z góry dzięki wielkie.

Czy ktoś mógłby podać mi instrukcje jak tego dokonać?
Go to the top of the page
+Quote Post
ctom
post 10.01.2015, 11:43:24
Post #10





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


  1. if( $this->user('arekko')->seid('mam większe zlecenie') && $this->user('arekko')->seid('Proszę o gotowy skrypt lub dokładnie instrukcje') {
  2. $link = "http://forum.php.pl/Kupie_f64.html";
  3. } else {
  4. $link = "https://github.com/search?l=PHP&q=image+resize&ref=searchresults&type=Repositories&utf8=%E2%9C%93";
  5. }
  6.  
  7. return $this->RedirectTo( $link ) ;


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
MESSIAH :)
post 10.01.2015, 13:10:28
Post #11





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

Ostrzeżenie: (10%)
X----


Cytat(ctom @ 10.01.2015, 11:43:24 ) *
  1. if( $this->user('arekko')->seid('mam większe zlecenie') && $this->user('arekko')->seid('Proszę o gotowy skrypt lub dokładnie instrukcje') {
  2. $link = "http://forum.php.pl/Kupie_f64.html";
  3. } else {
  4. $link = "https://github.com/search?l=PHP&q=image+resize&ref=searchresults&type=Repositories&utf8=%E2%9C%93";
  5. }
  6.  
  7. return $this->RedirectTo( $link ) ;

Umarłem zapomniałeś dodać funkcji : function notRealizeJob()
  1. { if( $this->user('arekko')->seid('mam większe zlecenie') && $this->user('arekko')->donthave('Gotowy skrypt lub dokładnie instrukcje') {
  2. $link = "http://forum.php.pl";
  3. } else {
  4. or die("Nie dostanę kasy.");
  5. }
  6. }


Ten post edytował MESSIAH :) 10.01.2015, 13:11:09


--------------------
Go to the top of the page
+Quote Post
arekko
post 10.01.2015, 15:15:45
Post #12





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

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


Zbyt dużo sakrazmu w waszych odpowiedziach .. proszę o instrukcje jakich funkcji należy użyć.
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: 15.06.2025 - 23:57