Wpis z mikrobloga

Cześć Mirki, mam pewien problem i może ktoś z Was coś doradzi.

Piszę appkę, w której jedną z głównych funkcji jest zoomowanie obrazów. Z racji tego, że na obraz będą nanoszone obszary (mniejsze i większe), uznałem, że najlepszym wyjściem bedzie użycie do tego svg i aplikowanie potomków. Niemniej jednak domyślne obrazy mają po 5000x3500 pikseli i takie muszą zostać. Z racji tego zaciągam z bazy obraz wraz wymiarami, ładuję go jako tło kanwy a zooma załatwiam przy użyciu transform: scale() w CSS.

Sęk w tym, że obraz skalowany dynamicznie przez przeglądarkę znacząco traci na jakości podczas pomniejszania.
Da się jakoś zmusić przeglądarki (zalezy mi jedynie na Chrome i IE) do ładnego skalowania obrazów? Zalezy mi tylko na skalowaniu w zakresie 0.01-0.99, powyzej 1 nie będę nic skalować.

#javascript #html5 #css
  • 10
@tomash-pl: w jaki sposob skalujesz? Globalnie zawsze od tego wielkiego obrazu czy lokalnie po zmianach. Powinienes zawsze stosowac rozwiazanie pierwsze. Bez kawalka kodu nic nie powiem bo przegladarki ktore wymieniles dzialaja dobrze. Kod masz skopany.
@karer: @rbielawski: odnośnie rozwiązania problemu - uznałem, że będę w finalnej wersji dynamicznie serwował z backendu obrazy o odpowiedniej rozdzielczości (w kilku krokach) i przeładowywał je w locie. Może nie jest to najwydajniejsze, ale: 1. działa, 2. wydajność < użyteczność, a przynajmniej w tym projekcie.
@tomash-pl: jesli juz bawisz sie w wiele rozdzielczosci to maksymalne zwiekszenie obciazenia to 2 krotne wykorzystanie lacza. Wydajnosc nie powinna spasc nawet o ulamek.
@tomash-pl: w przypadku zastosowania wielu rozdzielczosci nalezy okreslic ile zajmowac beda obrazki o roznych rozdzielczosciach. Tak wiec jesli orginalny zajmowal 10 mega, to obrazki o rozdzielczosciach 2 krotnie mniejszych do nieskonczonosci beda razem z orginalnym zajmowac 20 mega.

Wyswietlanie nie bedzie wolniejsze. Jedynie wiecej informacji bedzie przesylanych.
@karer: no to w sumie tak, jak myślałem. Tu na szczęście maksymalna waga obrazka to około 300kB, więc przy takim założeniu wyjdzie około 600kB, może ciut więcej, jeśli zdecyduję się na kroki co 25%, a nie co 50% skali. :)