Obrazek w odcieniach szarości

0

Witam
Chciałby zrobić galerię ze zdjęciami. Zdjęcia w niej miałby by być w odcieniach szarości a po najechaniu kursorem zmieniać się na kolorowe.
Na necie nie znalazłem niczego ciekawego no oprócz jednej stronki..
http://algorytmy.pl/?id=909&pp=f
Ale tam za kase jest:/
Moze ktoś ma taki skrypt kóry zamienia kolorowy obrazek na obrazek w skali szarości a po najechaniu odwrotnie?

0

No tak, algorytmy.pl tez mnie czasem wkurzaja ze kase chca za takie informacje [glowa]
Nie proponuje skali szarosci, bo to bedzie dzialao TYLKO na IE, bo tylko pod IE jest taki filtr (czyli Gray)

Fajnie tez wyglada jesli zdjecia sa lekko przezroczyste pod IE jest filtr Alpha, pod FF tez dali odpowiednik ;)

http://www.mandarindesign.com/opacity.html

0

desperat mowa jest tu chyba o php.

Poza tym ŁukaszNS napisz czy

  • chciałbyś zrobić to wszystko w JS: szary obrazek z użyciem tego filtra w IE i ponajechaniu ma sie robić kolorowy),
  • czy chcesz zrobić w php szary obrazek(oddzielny plik),a w JS zwykłą podmianę obrazka na kolorowy.

Mam nadzieje że zrozumiałe..

0

to żeby było szybciej to możesz wykorzystać wbudowane filtry IE i FF dla ustalenia skali szarości, natomiast dla przeglądarek które same tego nie potrafią zrobić możesz podawać wygenerowany przez php obrazek, algorytm jest banalny, po prostu bierzesz każdy pixel i zamieniasz go z RGB=(R,G,B) na RGB=(0.15R + 0.5G + 0.35B, 0.15R + 0.5G + 0.35B, 0.15R + 0.5G + 0.35B)

albo zamiast lecieć po pikselu o ile można lepiej lecieć po palecie kolorów - będzie szybciej, czyli:

<?php

$img = imagecreatefromjpeg('gif.gif');

for($i = 0; $i < imagecolorstotal($img); $i++){
  $col = imagecolorforindex($img, $i);
  $col = round(0.15 * $col['red'] + 0.5 * $col['green'] + 0.35 * $col['blue']);
  imagecolorset($img, $i, $col, $col, $col);
}

imagegif($img, 'gif_gray.gif');

?>
0
Adamo napisał(a)

to żeby było szybciej to możesz wykorzystać wbudowane filtry IE i FF dla ustalenia skali szarości
A jaki jest ten filtr pod FF?? Bo jak kiedys szukalem to nie moglem znalezc :/

Adamo napisał(a)

$col = round(0.15 * $col['red'] + 0.5 * $col['green'] + 0.35 * $col['blue']);
A dlaczego akurat 0.15, 0.5, 0.35 ?? [???]
Dla przykladu, kolor czytko czerwony, wg tego wzoru powinien miec 38, wg PhotoShopa ma wartosc 130. Mozesz wyjasnic o co Ci chodzilo??

user image

0

te, to nie ja wymyśliłem, chociaż mi też coś nie pasuje, no to podpasuj odpowiednio, według PhotoShopa jest to w takim razie 0.5R + 0.85G + 0.25B - chociaż w sumie nie wychodzi 1 tylko ponad czyli składowe mogą być większe od 255 :| w takim razie coś się jeszcze dzieli czy coś może to jest (1.5R + 2.5G + 0.8B) / 3 - jak jesteś ciekawy to pokombinuj i wyciągnij z photoShopa wzorek, w sumie chyba nie ma ustalonego jakiegoś w normie bo ile stron tyle wzorów możesz wyciągnąć chociaż najpopularniejszy jest (R+G+B)/3 albo uwzględnianie samego R co ani jedno ani drugie nie daje zbyt dobrych rezultatów

// no to nie ma takiego filtra pod FF, źle Cię zrozumiałem

0

Co do sposobu to jest mi to obojęne.. liczy się efekt końcowy:) Zaraz sprawdze to co mi już zapodaliście:)
Dzieki:)

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