Mod Rewrite nakładanie znaku wodnego na obrazy pobierane z serwera

0

Pisalem w jednym watku o metodzie nakladania na obrazy znajdujace sie na serwerze znaku wodnego, ktory jest nakladany, ale dopiero w momencie pobierania przez forum, strone obrazu, tak ze obraz na serwerze jest oryginalny bez znaku, ale w momencie jego wywolania pliczek ze znakiem wodnym jest dokladany do tego obrazu i na forum juz wyswietla sie obraz ze znakiem wodnym.

Watek przeniesiono mi do kosza bo podalem zly temat wiec pisze ejszcze raz.

Jeden z kolegow podal mi cos takiego:
Przy dużej ilości wywołań nakładanie obrazu przy każdym żądaniu będzie generować duże obciążenie. Już lepiej zapisuj sobie obie wersje obrazka - jedną ze znakiem, drugą bez. Tą bez znaku sobie zachowaj, a światu pokaż tą ze znakiem. Ew. mod_rewrite w ruch i możesz sprawdzić np. referer i wg tego pokazuj odpowiednią wersję. Ale nie narzucaj znaku wodnego za każdym requestem.

Chcialbym wiedziec jak dokladnie zdefiniowac w mod rewrite taka opcje aby te pobierane obrazy mialy doklejany obraz znaku wodnego? Tzn. tak aby na forum, stronie na ktorej zostanie wstawiony link do zdjecia z mojego serwera pojawil sie jeszzce dodatkowo wlasnie znak wodny na zdjeciu.

Zapisywanie 2 wersji plikow bez i ze znakiem wodnym na serwerze raczej jest duzym wyzwaniem dla mnie gdyz szybko zapelnie dyski hostingu poprzez duplikaty.
Dlatego chcialbym przetestowac metode z mod rewrite i dodatkowo jak zechce zmienic znak wodny na fotkach bede musial zmienic tylko 1 plik ze znakiem wodnym a nie np. 1000 wiec wydaje mi sie to w tym momencie najlepsze rozwiazanie.

0

Chcesz ZAWSZE pokazywać znak wodny czy tylko po spełnieniu określonego warunku? Jaki jest to warunek?

0

Przy dużej ilości wywołań nakładanie obrazu przy każdym żądaniu będzie generować duże obciążenie

Zapisywanie 2 wersji plikow bez i ze znakiem wodnym na serwerze raczej jest duzym wyzwaniem dla mnie gdyz szybko zapelnie dyski hostingu poprzez duplikaty.
Możesz połączyć obydwie idee. Zrób sobie taki cache. Zapisuj na serwerze obrazy zmodyfikowane, ale nie wszystkie, ustal sobie jakiś limit na ilość bajtów czy sztuk obrazów. Kiedy użytkownik zażąda obrazu wtedy sprawdzasz czy obraz jest w cache'u. Jeśli nie ma to konwertujesz obraz oryginalny i dodajesz do cache'a. Jeśli ilość danych w cache przekroczy limit to usuwasz najmniej "ważne" obrazy. "Ważność" obrazu możesz ustalić przede wszystkim na podstawie ostatniego czasu dostępu ale możesz wziąć pod uwagę także częstotliwość dostępu do obrazu.

Co do implementacji to nie mnie pytaj :) , nie jestem webmasterem. Możliwe, że istnieją jakieś gotowe rozwiązania które mógłbyś wykorzystać.

0

Znak wodny nalozony na zdjecie chce pokazywac zawsze. Tylko chce miec możliwosc zmiany tego znaku wodengo w przyszlosci. Wiec nie chce modyfikowac zdjec.

Przykladowo wchodzisz na serwer przechowujacy obrazki jak ImageSchack, wrzucasz sobie obrazek, potem wstawiasz link na forum, aby pokazac innym to zdjecie.
Ale wyswietlane zdjecie na forum bedzie mialo dodatkowo nalozony obrazek znaku wodnego.

Kiedy bede chcial zmienic znak wodny na inny wtedy zmieniam pliczek ze nakiem wodnym i na kazdym zdjeciu, do ktorego jest link na forach, stronach automatycznie bedzi inny znak wodny.
Kiedy wrzucasz pliki na serwer hostujacy i zapisujesz od razu na nich znak wodny, w przyslzosci nie pozwoli to na zmiany tego znaku wodengo. Musialbym na nowo obrabiac wrzucone fotki. Przy 1000 obrazkow jest to pracochlonne. Ponadto raz dodanego juz trwale znaku wodnego np. na srodku nie usuniesz czyli zniszczysz zdjecie.

Kiedy zastosuje rozwiazanie jakie chce, pozostawione obrazy na moim serwerze nie ulegna modyfikacji bo onene nie beda w zaden sposob modyfikowane, beda tylko przechowywane, ale poprzez mod rewrite albo skrypt php beda mialy dolaczane przy wywolywaniu danego zdjecia obraz ze znakiem wodnym.

Przykladowo dzisiaj wstawiasz na moj serwer swoje zdjecie, wrzucasz link do niego na forum, aby pokazc je innym. To zdjecie bedzie mialo nalozony znak wodny.
Ja jutro zmieniam znak wodny na inny, wchodzisz na swoje forum gdzie wrzuciles link do fotki i masz te sama fotek, ale juz z innym znakiem wodnym.

Tylko juz teraz to nie wiem czy da sie to w mod rewrite czy jednak nalezy uzyc skryptu php, aby takie cos wykonac.
To co ja mam wykonuje php, ale nie moge za bardzo tego obczaic i czy w ogole dziala to dobrze. Mam to na localhost.
Dlatego tez pytam sie czy mozna i zrobic to z uzyciem mod rewrite. A jesli tak to wlasnie jaka jest na to regula?

0

adf88 rozwiaznie z cache, jesli chodzi o hostin plikow graficznych jak ImageSchack to chyba nie jest dobre rozwiazanie.

Ale chcialbym sie zapytac czy napisanie skryptu takiego hostingu plikow graficznych, bez zaprzegania do tego bazy danych to dobre rozwiazanie? W zasadzie pliki znajduja sie tylko na serwerze na dysku i potrzebny jest do nich url.
Baza mam, ale jako pliki plaskie, ktore tylko zbieraja informacje o dodanych plikach do niczego wiecej nie jest mi ona potrzebna.

0

U mnie dziala to tak jak tutaj:
http://web-majster.blogspot.c[...]a-wszystkich-obrazkach-w.html

Jeśli przeglądarka wywołuje istniejący plik to przepuszcza przez skrypt php, ktory nadaje temu obrazu znak wodny i tak powstaje obraz na forum ze znaiem wodnym

0

Tj. mod_rewrite nie posłuży Ci na pewno do wrzucenia znaku wodnego, bo nie do tego służy. Do utworzenia znaku wodnego potrzebujesz pliku php.

Jak to zrobić najprościej (pomijam kwestie, że dobry hosting obrazków nie będzie tylko na shared hostingu z 2GB HDD, ale ty nic ponad to nie chcesz zrobić. Dobry hosting obrazków może mieć np. 30GB nowych obrazków przez godzinę!)
W folderze ze stroną będziesz miał folder na zdjęcia. Nazwijmy go po prostu: upload.
Zakładam, że skrypt do wrzucania zdjęć już masz.
Pliki będą nazywane jakąś tam regułą (albo losowe nazwy), czyli generalnie do plików dostaniesz się np. pisząc:
http://domena/upload/plik.jpg

Teraz blokujesz folder upload przed dostępem (umieszczasz w nim plik .htaccess (bez nazwy, samo rozszerzenie, szukaj w googlach jak utworzyć taki plik pod windows) wpisując w nim deny from all).

Przygotowujesz sobie skrypt php uruchamiany w formie: znak_wodny.php?obrazek=plik.jpg - ten skrypt zwraca przetworzony obrazek, ale, że forma linku Ci się nie podoba, to tworzysz jeszcze w folderze głównym plik .htaccess o treści:

Options -Indexes # to nie związane z tematem, ale może zostać dla bezpieczeństwa
RewriteBase /
RewriteEngine On
RewriteRule ^obrazek/(.*)\.(jpg|gif|png)$ znak_wodny.php?obrazek=$1.$2 [L]

Teraz wpisując adres:
http://domena/obrazek/plik.jpg dostaniesz tak naprawdę obrazek przetworzony przez Twój skrypt

Tyle mniej więcej, czytaj 1000 razy aż ogarniesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0