PDA

Zobacz pełną wersję : Generowanie miniatur - fragment dużej grafiki, bez zmniejszania



galganka
27-12-2009, 16:20
Witam!

Tak jak w tytule, chciałabym, aby mój virtuemart nie tworzył miniaturek na zasadzie zmniejszania grafiki, tylko wycinał jej fragment do wymaganych rozmiarów np 180px x 180px, czy jest taka możliwość?

Chodzi o to, że teraz każdą grafikę muszę obrabiać osobno, a tez każda grafika ma różny rozmiar i trudno jest dopasować wszystkie do kwadratu, natomiast takie rożne rozmiary bardzo brzydko wyglądają na stronie.

Po kliknięciu na miniaturę powinna się otworzyć już normalna grafika i tu nie ma znaczenia rozmiar.

Będę wdzięczna za wskazówkę.

nikszal
27-12-2009, 17:11
Witam!

Tak jak w tytule, chciałabym, aby mój virtuemart nie tworzył miniaturek na zasadzie zmniejszania grafiki, tylko wycinał jej fragment do wymaganych rozmiarów np 180px x 180px, czy jest taka możliwość?Nie spotkałem takiego dodatku do Joomla.


Chodzi o to, że teraz każdą grafikę muszę obrabiać osobno, a tez każda grafika ma różny rozmiar i trudno jest dopasować wszystkie do kwadratu, natomiast takie rożne rozmiary bardzo brzydko wyglądają na stronie.Nakładaj fotki na białe kwadratowe tło o stałych wymiarach i zniknie Twój problem. Wszystkie będą wyglądały podobnie, pomijając treść samej grafiki.

Jola
27-12-2009, 17:27
Witam,
jest taki sposób - grafika zastosowana jako tło jakiegoś elementu:

style="background-image: url('.$url.');
background-repeat:no-repeat;
background-position:top center;
width:180px;
height:180px;"$url to adres do grafiki

nikszal
27-12-2009, 17:35
@jolaass - masz rację, tylko kto wyczai z takiego wycinka grafiki, co on przedstawia?
Przykład:Telewizor LCD. Co będzie widać? Kawałek gónej części obudowy i część wyświetlacza. Konia z rzędem temu, kto zorientuje się, co ta grafika przedstawia.

Jola
27-12-2009, 17:43
To całkiem dobry sposób na zgaduj-zgadulę! :)
Wyślij sms-a z prawidłową odpowiedzią co zawiera cały obraz a zobaczysz go w całości. ;)

nikszal
27-12-2009, 17:46
Teraz też masz rację, ale... sklep nie jest najlepszym miejscem na publikowanie zagadek fotograficznych.

galganka
27-12-2009, 17:56
Jak widzę potwierdza się teza, że ludzie nie lubią czytać.
Napisałam wyraźnie, że tylko miniatura ma być fragmentem, nie grafika główna, która wyświetla się po kliknięciu w miniaturę. No i ten sarkazm jest już zupełnie nie na miejscu.
Niestety żadne z tych metod nie działają. Nie szukam modułu tylko jakiegoś rozwiązania, być może odpowiadają za to biblioteki, a na tych się nie znam.
Chodzi mi o efekt jaki można zobaczyć na portfolio Anetusa na przykład.
Myślę, że każdy wie, o czym mówię, a przynajmniej "weterani" powinni wiedzieć.

Jola
27-12-2009, 17:56
Oczywiście masz rację, coś mnie podkusiło i robię sobie żarty.
Zazwyczaj zakładam, że jeśli ktoś szuka rozwiązania, to przemyślał konsekwencje takich zmian. Wiadomo, że wstawienie takiej modyfikacji będzie miało sens przy grafikach o zbliżonych rozmiarach, np wszystkie są tej samej wysokości ale szerokość jest różna.

galganka
27-12-2009, 18:13
Dokładnie o tym mówię, grafiki są różnej wielkości. Napisałam to już w pierwszym poście.
Wolałabym temat sprowadzić do konkretów a nie do domysłów i żartów. Jeśli zadaję pytanie, a mniemam, że postawiłam je w miarę poprawnie i jasno, nie oczekuję, aby ktoś usiłował za mnie myśleć i zakładać cóż mogę chcieć zrobić na swojej stronie.
Zapewniam również, że zadawanie pytań na tym forum to naprawdę ostateczność dla mnie, jak widać jestem tutaj kilka lat i doskonale znam zwyczaje panujące tutaj, a szczególnie sposób w jaki traktuje się użytkowników.

Pytanie = Odpowiedź

Reszta jest zbędna.

nikszal
27-12-2009, 18:26
@galganka - brak Ci Świątecznego poczucia humoru. Popatrz jak to może wyglądać (http://testsite.nstrefa.pl/tv.jpg). Zorientujesz się z tego małego wycinka (miniatury prowadzącej do dużego zdjęcia), że chodzi o telewizor?

Jola
27-12-2009, 18:32
Wiola - chyba jesteś zbytnio przewrażliwiona!
Z forum korzysta wiele osób i możliwe, że ktoś będzie chciał skorzystać z podanego rozwiązania, więc bardzo dobrze, że wymieniamy na ten temat spostrzeżenia.
Żarty nie są na Twój temat - tylko my się z @nikszalem przekomarzamy - nie pierwszy raz. :)
Chciałaś dostać odpowiedź i dostałaś.
U mnie takie rozwiązania bardzo dobrze się sprawuje. Nie podałaś jak próbowałaś je zastosować.
Łatwiej zbyć słowami "nie działa" i mieć pretensje do całego świata. To chyba nie fair.

galganka
27-12-2009, 18:34
Nikszal, Ty naprawdę nie czytasz dokładnie. Nie ważne co pokazuje miniatura.
W sklepie nie umieszczasz tylko miniatury bez opisu, bez żadnych innych danych. Napisałam wyraźnie, że to jest nieistotne, że po kliknięciu ma się otworzyć normalna grafika i w tym momencie już nie jest istotny jej rozmiar.
Ludzie czytajcie bardziej uważnie, czy to takie trudne?

Bazyl
27-12-2009, 18:37
Wstaw tam: kliknij, aby poznać produkt...
I po kłopocie...

nikszal
27-12-2009, 18:38
Nikszal, Ty naprawdę nie czytasz dokładnie. Nie ważne co pokazuje miniatura.
Teraz będę złośliwy - omijam takie sklepy, ponieważ miniatura ma być mniejszą kopią zdjęcia, a nie Bóg wie czym, na zasadzie - ma być "coś" widoczne. Ale to Twój sklep i Twoi klienci. Ja staram się trzymać profesjonalny standard.

galganka
27-12-2009, 18:43
Wiola - chyba jesteś zbytnio przewrażliwiona!
Z forum korzysta wiele osób i możliwe, że ktoś będzie chciał skorzystać z podanego rozwiązania, więc bardzo dobrze, że wymieniamy na ten temat spostrzeżenia.
Żarty nie są na Twój temat - tylko my się z @nikszalem przekomarzamy - nie pierwszy raz. :)
Chciałaś dostać odpowiedź i dostałaś.
U mnie takie rozwiązania bardzo dobrze się sprawuje. Nie podałaś jak próbowałaś je zastosować.
Łatwiej zbyć słowami "nie działa" i mieć pretensje do całego świata. To chyba nie fair.

Wstawiłam ten fragment kodu do pliku theme.css jednak wiem, że to rozwiązanie nie spełni moich oczekiwań, bo za generowanie miniatur nie odpowiada plik css tylko biblioteki GD2 lub coś innego, na czym się nie znam.
Jestem grafikiem nie programistą, nie mam problemów z css-ami.

Nie jestem przewrażliwiona, drażni mnie tylko, jeśli muszę powtarzać coś kilkakrotnie, mimo, iż wszystkie potrzebne informacje zawarłam w pierwszym poście. Nie potrzebne mi są opinie tylko konstruktywne rady. To jest forum techniczne, a nie towarzyskie i przychodzę tu po informacje.

I jeszcze jedna rzecz, również nie są mi potrzebne niczyje złośliwości. Powtórzę, nie przyszłam tutaj by zbierać opinię, jeśli zajdzie taka potrzeba, wstawię link do sklepu w odpowiednim dziale i wtedy każdy może wylewać swoje złośliwości do woli.

Proszę obejrzeć to portfolio, czy jest nieprofesjonalne? http://www.anetus.com/component/option,com_jportfolio/cat,1/Itemid,18/

O taki efekt mi chodzi.

Jola
27-12-2009, 19:16
Podany kod należy wstawić (zmodyfikować) do pliku odpowiedzialnego za wyświetlanie miniaturek. W pliku css nie ma prawa działać chociażby ze względu na przekazywany za pomocą php adres grafiki. Trochę jestem zmrożona Twoją postawą, nie będę się więcej narzucać. Może ktoś inny z tego "forum technicznego" będzie miał twardszą skorupę.

nikszal
27-12-2009, 19:30
@galganka - pokaż mi przykład takiego sklepu, w którym na miniaturach "coś tam" widać. Nie myl sklepu z portfolio.

galganka
27-12-2009, 20:05
@galganka - pokaż mi przykład takiego sklepu, w którym na miniaturach "coś tam" widać. Nie myl sklepu z portfolio.

Poddaję się. Niepotrzebny mi sklep, jak wszystkie inne. Chcę mieć po prostu takie miniatury i tyle, czy prosiłam o opinię? Nie.

Jolaas
Nie chodzi o moja postawę. Napisałam pierwszy post z wyraźnymi danymi.
Efekt: Dwie strony opinii i wygłupów o tym, że robię zagadki fotograficzne.

Nie należy wyciągać wniosków, gdy nie ma się wystarczającej ilości danych, nikt nie wie, z czym ma być sklep, po co więc ta cała dyskusja.

Jak już wspomniałam, nie jestem programistą, nie napisałaś gdzie wstawić ten kod, tak się składa, że nie wiem, gdzie ten kod wstawić, zatem pierwszą myślą był plik css-a.

Nie widzę innego miejsca do wstawienia tego fragmentu kodu, za wygląd miniaturek w sklepie odpowiada plik, o którym już wspomniałam.

zwiastun
27-12-2009, 20:11
ad. @gałganka:
Aż przykro czytać:
1. Pytasz, otrzymałaś co najmniej dwie rzeczowe odpowiedzi - @nikszala, który pisał, że nie zna takiego cudeńka i @jolaass, która podała Ci jedno z rozwiązań, jakie można zastosować (inne to przycięcie wczytywanego obrazka realizowane wpisanym css-em).
2. Co więcej, @nikszal w pierwszej odpowiedzi podał sposób na zaradzenie problemowi (pomijam, że niezbyt jasny, jak go zrealizować).
3. W uwagach o skutkach, jakie mogłoby przynieść wymyślone przez Cię rozwiązanie doczytujesz się tego, czego dokładnie chcesz się doczytać - nie troski doradzających Ci o efekt, ale złośliwości. Ale to tylko Twoja interpretacja.
4. W świąteczny czas ochoty na wytykanie nikomu czegokolwiek ochoty nie mam, ale zdaje się, że swój stres przekuwasz w agresję wobec usiłujących Ci pomóc (zarzut o niedokładnym czytaniu), a nawet wobec forum (zdanie o traktowaniu użytkowników). Zdaję się mieć dobrą pamięć, choć może lata swoje czynią, ale jakoś nie przypominam sobie, byś doznała tu kiedyś niewłaściwego potraktowania, a jeśli nawet się przydarzyło, to na pewno zostało szybko naprawione przez któregoś z administratorów lub moderatorów.
Radziłbym przeczytać ten watek raz jeszcze spokojnie, z uwagą i wyciągnąć odpowiednie wnioski. Pamiętam bowiem i to, że miałaś już okazję przepraszać za niezbyt miłe odnoszenie się do pomagających Ci.
I w ogóle, może lepiej skupić się na tym, co dla Ciebie jest problemem "technicznym", bo od rozwiązywania psychologicznych to forum na pewno nie jest! Lepiej więc zapytać na przykład @jolaass, gdzie wpisać, a nie - po raz kolejny - zgłaszać swoje pretensje!

PS. Jakieś możliwość przycinania dawał - o ile pamiętam - MuliThumb. Czy się da zastosować i jak do VM, nie wiem.

galganka
27-12-2009, 20:31
Zwiastunie nie prosiłam również o portret psychologiczny czy zdiagnozowanie jakiejkolwiek dolegliwości. Zadałam konkretne pytanie.
Potrzebna mi jasna, zwięzła i konkretna odpowiedź, całą resztę możecie zostawić na PW, mnie nie jest potrzebna. Ja naprawdę nie mam czasu, pracuję.

Generalnie na wszystkich forach należy trzymać się zasady, że jeśli udziela się jakiejkolwiek odpowiedzi, powinna być jak najbardziej zrozumiała. Równie dobrze mogę wstawić fragment kodu do css-a templatki po takiej odpowiedzi i również wtedy przeczytam, że kogoś mrożę.

Nie bawmy się w analizy postępowania, czy kogoś już tutaj przepraszałam czy nie, nie pamiętam, wszystko jest możliwe, to rzeczywiście teraz jest dla Ciebie Zwiastunie, jak widzę ważniejsze, niż sens tego wątku w ogóle.

Jeśli sytuacja wymaga, potrafię przeprosić, ale jak na razie nie nabijam się z niczyich pomysłów, co miało miejsce w przypadku mojego.

Czy naprawdę nie można skupić się na jednej rzeczy na raz? Jeśli nie ma takiego rozwiązania, wystarczy napisać.

zwiastun
27-12-2009, 21:03
Proponuję zatem skupić się na rzeczowych odpowiedziach, które otrzymałaś! Cztery konkretne wskazówki:

Nie spotkałem takiego dodatku do Joomla.
Nakładaj fotki na białe kwadratowe tło o stałych wymiarach i zniknie Twój problem. Wszystkie będą wyglądały podobnie, pomijając treść samej grafiki.

Witam,
jest taki sposób - grafika zastosowana jako tło jakiegoś elementu:
$url to adres do grafiki

Podany kod należy wstawić (zmodyfikować) do pliku odpowiedzialnego za wyświetlanie miniaturek. W pliku css nie ma prawa działać chociażby ze względu na przekazywany za pomocą php adres grafiki...

PS. Jakieś możliwość przycinania dawał - o ile pamiętam - MuliThumb. Czy się da zastosować i jak do VM, nie wiem.

W odpowiedzi @joolass był konkretny kod, który w cytacie "wycięło".

galganka
27-12-2009, 21:38
@joolass podała kod, ale nie podała miejsca, w którym mam go wstawić, a jak już napisałam, nie wiem gdzie go umieścić, szukałam w plikach VM, w pluginach odpowiadających za grafikę w joomli, w innych dodatkach i jedynym dla mnie najbardziej możliwym miejscem jest theme.css, ale to, jak wiadomo nic nie daje.

W zasadzie znalazłam rozwiązanie:
width: 180px!important;
width: 180px;
height: 180px!important;
height: 180px;

Lecz to rozwiązuje mój problem połowicznie. Nie trzeba żadnej grafiki jako tło, wystarczy "important" ale brakuje skryptu, który nie pozwoli css-owi rozciągnąć lub skurczyć grafiki, która ma się znaleźć w miejscu miniatury i tutaj nie mam rozwiązania.

Jola
27-12-2009, 21:50
Nie podałaś miejsca gdzie chcesz wprowadzić te zmiany. Czy chodzi o widok szczegółowy produktu? Jaka wersja VirtueMarta?

galganka
27-12-2009, 22:08
Pliki browser i flypage, najnowsza wersja Virtuemart i joomla 1.5.15.
W zasadzie wszystkie miniatury w sklepie mam ustawione w PA VM na 180px, ale miniatury samych kategorii nie są aż tak ważne jak miniatury w plikach, które wymieniłam. Nie ma znaczenia czy mam zaznaczoną czy odznaczona opcję dynamicznego tworzenia miniaturek, bo to nie ma z tym nic wspólnego.

Jola
27-12-2009, 22:53
Jeśli pokazywanie grafiki ustawione jest jako LightBox - plik components/com_virtuemart/themes/default/theme.php linia ok. 86 jest:

if( @$_REQUEST['output'] != "pdf" && $this->get_cfg('useLightBoxImages', 1 ) ) {
$link = $imageurl;
$text = ps_product::image_tag($product['product_thumb_image'], $img_attributes, 0)."<br/>".$VM_LANG->_('PHPSHOP_FLYPAGE_ENLARGE_IMAGE');
$product_image = vmCommonHTML::getLightboxImageLink( $link, $text, $product['product_name'], 'product'.$product['product_id'] );
}zmień na:

if( @$_REQUEST['output'] != "pdf" && $this->get_cfg('useLightBoxImages', 1 ) ) {
$link = $imageurl;
// $text = ps_product::image_tag($product['product_thumb_image'], $img_attributes, 0)."<br/>".$VM_LANG->_('PHPSHOP_FLYPAGE_ENLARGE_IMAGE');
//dodane
$url = 'components/com_virtuemart/shop_image/product/'.$product['product_thumb_image'];
$text = '<div style="background-image: url('.$url.');background-repeat:no-repeat;background-position:top center;width:180px;height:180px;">&nbsp;</div><br/>'.$VM_LANG->_('PHPSHOP_FLYPAGE_ENLARGE_IMAGE');
//koniec dodane
$product_image = vmCommonHTML::getLightboxImageLink( $link, $text, $product['product_name'], 'product'.$product['product_id'] );
}

galganka
27-12-2009, 23:11
To jest dokładnie to, o co mi chodziło, załatwia sprawę pierwszego zdjęcia.
Wypróbowałam i działa, niestety tylko na tym pierwszym zdjęciu, zatem teraz, kiedy już widzę efekt, może uda mi się ten kod poprawnie użyć w reszcie plików.

Bardzo dziękuję za rozwiązanie mojego problemu.

Tak na marginesie - nie używam lightboxa, ale wystarczy dodać na końcu jeszcze jedną linijkę np:
$product_image = rokCommonHTML::getRokboxImageLink( $link, $text, $product['product_name'], 'product'.$product['product_id'] );
czy nazwę innego dodatku do wyświetlania zdjęć i wszystko działa.

Jeszcze raz dziękuję.