Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> resize crop (zmiana rozmiaru obrazka i obcinanie)
AxZx
post 28.07.2008, 21:55:43
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam

mecze sie nad kawalkiem kodu i nie wiem jak to rozwiazac bo chyba to jest skomplikowane;)

jest galeria zdjec, uzytkownicy wrzucaja sobie zdjecia, a poszukiwany kod ma za zadanie utworzyc 3 obrazki o zadanych rozmiarach.

zalozenie jest takie:
najpierw zmiana rozmiaru obrazka a pozniej obciecie to co pozostalo poza zadany rozmiar.
jeden obrazek bedzie mial tylko zmieniany rozmiar.

czyli funkcja ktora to bedzie realizowac przyjmuje 5 parametrow:
  1. <?php
  2. function resize($src_width = 0, $src_height = 0, $out_width = 0, $out_height = 0, $crop = TRUE);
  3. ?>

kombinowalem juz na rozne sposoby ale jak do tej pory zawsze znajdywal sie jakis obrazek i rozmiary koncowe ktore w polaczeniu razem nie dawaly oczekiwanego rezultatu.

czy ktos sie juz nad tym glowil?
nie chodzi mi o konkretny kod z funkcjami imagecopyresample i tym podobne, bo dany algorytm bede realizowal na metodach biblioteki Image dolaczonej do Kohany.

pozdrawiam

EDIT:
bezsensu tego posta napisalem.
chodzi o to zeby obrazek na wyjsciu mial identyczne wymiary jak podane w formularzu, ale nie tak zeby wycinal ze srodka tak jak to przewaznie cropy robia tylko najpierw zmniejszyl obrazek do nakrotszej krawedzi a nastepnie ucial z tej dluzszej krawedzi resztki. gdy obrazek jest mniejszy musi powiekszyc do podanych rozmairow no i uciac resztki.

Ten post edytował AxZx 28.07.2008, 22:17:15


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
ddiceman
post 29.07.2008, 12:09:30
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Algorytm step-by-step:
Kod
oznaczenia:
SW - szerokosc zrodla (obrazka do pomniejszenia)
SH - wysokosc zrodla
SI - obrazek zrodlowy
DW - szerokosc docelowa
DH - wysokosc docelowa
DI - obrazek docelowy)

A = DW/DH
B = SW/SH

if(B > A){
    C = DH/SH
    resize: SI(SW, SH) -> DI(SW*C, SH*C = DH); // pomniejszenie tak, ze wysokosc bedzie taka sama
    crop:   DI(SW*C, DH) -> DI(DW, DH)
}
else{
    C = DW/SW
    resize: SI(SW, SH) -> DI(SW*C = DW, SH*C); // pomniejszenie tak, ze szerokosc bedzie taka sama
    crop:   DI(DW, SH*C) -> DI(DW, DH)
}


jakos tak o ile dobrze zrozumialem Twoj problem

Ten post edytował ddiceman 29.07.2008, 12:11:07
Go to the top of the page
+Quote Post
AxZx
post 29.07.2008, 13:06:05
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


dzieki, a co oznacza linijka
Kod
SI(SW, SH) -> DI(SW*C, SH*C = DH)

?
gdybys mogl wyjasnic to bede juz wiedzial jak hpp do tego napisac:)


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
ddiceman
post 29.07.2008, 13:12:05
Post #4





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


resize staerego obrazka (ktory ma wymiary SWxSH do obrazka o wymiarach AxB, gdzie A = SW*C a B = SH*C, przy czym SH*C jest rowne DH, czyli
  1. <?php
  2. imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $src_w*$c , $src_h*$c, $src_w, $src_h);
  3. ?>


Ten post edytował ddiceman 29.07.2008, 13:12:28
Go to the top of the page
+Quote Post
AxZx
post 29.07.2008, 13:26:20
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


dzieki bardzo. wyglada sensownie:)
musze sie nad tym zastanowic, bo metody resize i crop w kohanie przyjmuja takie parametry jak szerokosc i wysokosc nowego obrazka oraz parametr ktory okresla wg ktorego boku ma byc zmieniany rozmiar - tzw. master:)

no i wlasnie problem jest w ustaleniu tego master.
czyli wedlug ktorego boku ma robic najpierw resize.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
ddiceman
post 29.07.2008, 13:29:02
Post #6





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


dla spelnionego if wg wysokosci a dla else wg szerokosci
wymiary docelowe to za kazdym razem SW * C oraz SH * C
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 - 03:26