Chciałbym po stronie klienta dzięki user.js móc wyodrębnić ilość i nazwy wczytanych obrazów z odwiedzanej strony. Następnie skrypt uruchomi konwerter obrazów do pożądanej postaci.
Niestety nie wiem jak poradzić sobie z szukaniem i następnie (być może) zapisaniem na dysk.
Jaki konwerter? Coś po stronie serwera, czemu podajesz linka do obrazka?
Te obrazki masz zapisane jakoś wg jakiejś zasady, czy chodzi Ci o wydobycie całej grafiki jaka znajduje się na stronie (każdy pliczek graficzny, niezależnie czy jest obrazkiem, logo, tłem, czy czymkolwiek innym)?
Konwerter formatu obrazka. Wszystko będzie się działo po stronie klienta. Chodzi mi o zapisanie na dysku wszystkich obrazów wyświetlanych na stronie z odpowiednim rozszerzeniem (np. tylko .bmp), ich konwersję i podmianę wyświetlanych w przeglądarce klienta na pliki po transformacji.
Po stronie klienta nie wywołasz zapisu pliku. Możesz ew. powiedzieć userowi: kliknij prawym i wybierz "Zapisz obraz jako..."
Jeżeli chodzi o konwersję między formatami - canvas albo svg umożliwiał (nie wiem czy na wszystkich przeglądarkach, na Operze coś takiego widziałem) zapisanie obrazka w jakimś formacie (po prostu przerysowywujesz obrazek na canvas/svg) i potem TEŻ pod prawoklikniem - użytkownik mógł to zapisać jako png czy jpeg.
Na pewno nie zrobisz tak, że na stronie będzie 15 bmp, 10 gifów i 3 jpegi, i nagle magicznie na dysku pojawi się u kogoś 28 pngów. Zapisz każdego obrazka użytkownik musi wywołać sam.
Powiedzmy, że mamy stronkę z linkami do zdjęć. Użytkownik klika, w któryś z nich.
Czy w takiej sytuacji można wykryć format zdjęcia i na jego rzecz wykonać konwersji? Tak, że wyświetlony zostanie obraz po zmianie formatu.
Konwersja odbywa się po stronie klienta i obsługiwana jest przy pomocy ActiveX.
EDIT:
Odpowiem sobie: tak, można wykryć rozszerzenie- kod poniżej. Niestety trzeba na serwerze uruchomić funkcję.
Czyli teraz w pliku HTML mam:
<a id="obrazek" href="javascript:LaunchApp('example.bmp')">Launch the executable 1</a></br>
natomiast w user.js:
function LaunchApp(fileName) {
try {
var pos = fileName.lastIndexOf(".");
var ext = fileName.substr(pos);
if(ext == '.bmp')
{
alert("bmp");
//tu chciałbym zapisać plik na dysk
//tu znajduje się ActiveX runEXE
}
else
{
alert(ext+ " not a common image format");
}
}
catch (ex){
alert("Error");
}
}
Więc obecnie brakuje mi zapisu na dysk do określonej lokalizacji
ActiveX? To Twoje cudo ma działać tylko na IE. To trochę zmienia. Nie możesz z pomocą tego czegoś co konwertuje od razu zapisać? W natywnych funkcjach przeglądarki się raczej nie doszukasz.
Właściwie to chodziło mi o zrobienie projektu gdzie grafika będzie przechowywana na serwerze w jednym formacie a do usera ma trafić w drugim. Obojętne gdzie wystąpi konwertowanie- ot takie założenie.
Z javascript spotykam się po raz pierwszy, miałem nadzieję że z jego pomocą szybko załatwię temat. Niestety, nie nadał się do tego problemu.
Sprawę rozwiązałem z pomocą aplikacji ASP.NET. Dla uzyskania lepszego efektu rozbuduję jeszcze funkcjonalność w js.
Dzięki za pomoc.