Jestem sobie szczęśliwym użytkownikiem Paperclipa. Działa jak trzeba i jestem zadowolony.
Pojawiła się jednak jedna rzecz, której nie wiem jak zrobić. Mianowicie:
Przy skalowaniu dużych zdjęć do konkretnych rozmiarów: powiedzmy 150x100 (150 szerokości), w przypadku gdy jest to obrazek w poziomie, to nie ma problemu.
Kiedy jednak jest obrazek w pionie, na dodatek jeśli jest to zdjęcie osoby, to standardowe skalowanie obcina tyle samo z góry i z dołu i się często otrzymuje zdjęcia bez głowy.
Pytanie jest więc takie: jak można manipulować skalowaniem i ustalać ile % ma być odcięte z góry, a ile z dołu?
Znalazłem tylko opcje vertical? i horizontal?, co może być pomocne: jeśli horizontal, to skaluj normalnie, a jeśli vertical, to skaluj obcinając więcej z dołu, niż z góry.
Tylko że właśnie nie wiem jak ustalić to obcinanie. Dokumentacja paperclipa tego nie mówi, a google też nie był za bardzo pomocny. Chyba że szukałem nie tam gdzie trzeba.
Spróbuj może najpierw z opcją “150x100#”, może wystarczy.
No właśnie kiedy ustawia się taką opcję, to skaluje tak, że proporcjonalnie obcina dół i górę.
a z “ptaszkiem”, czyli *magickowe “<150x100”?
To oczywiście działa, tylko że nie robi zdjęcia o wielkości 150x100, a po prostu skaluje tak, żeby dopasować do maksymalnie 150 szerokości albo 100 wysokości.
Ja zaś chcę osiągnąć efekt, że jeżeli zdjęcie jest pionowe, to thumbnaila tak czy owak chcę mieć poziomego (taki layout) i żeby on tego thumbnaila nie tworzył wyśrodkowując i obcinając głowę i nogi, a biorąc np. tylko górną część, a dolną by obcinał.
Mimo przeszukania wszystkich możliwych opcji, to jednak tylko to powyżej działa i ma sens. Trochę to nieeleganckie, ale ważne, że działa. Mam nadzieję, że któryś update paperclipa nie zmieni składni funkcji Geometry::cropping, bo mi się wtedy to posypie
W każdym bądź razie dzięki, hosiawak, w końcu mi to działa tak jak powinno!
Co do obawy z posypaniem się paperclipa przy aktualizacji:
Jeśli masz takie “spersonalizowane” zachowanie biblioteki to możesz (i powinieneś jako dobry programista) napisać testy które sprawdzą to zachowanie i powiadomią Cię podczas ew. upgrade’u w przyszłości, że aplikacja nie zachowuje się tak jak powinna.