![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Posiadam kamerę ip w sieci lokalnej z której jest dostęp do strumienia video i klatek obrazu, strumień video został umieszczony na stronie WWW. Niestety mam problem ponieważ kamera jest kolorowa, a design strony jest czarno biały i taki ma zostać, więc chciałbym aby video z kamery i obrazy z niej także były w grayscale. Ze strumieniem może być problem ponieważ jest realizowany przez kontrolkę activeX i już się z tym pogodziłem, jednakże może pojedyńcze klatki obrazu da się uzyskać w odcieniach szarości. adres do pojedyńczej klatki to: http://adres.pl:port/image.jpg
Zanalazłem gotowy skrypt w PHP który zmienia obraz kolorowy w grayscale, jednakże gdy zamiast nazwy pliku wpisuję ścieżkę dostępu do obrazu z kamery obraz się nie wyświetla: Kod <?php </P> <P>$file = 'http://adres.pl:port/image.jpg';<BR>$newfile = 'image.jpg';</P> <P>copy($file, $newfile);</P> <P><BR>$source_file = "image.jpg";</P> <P>$im = ImageCreateFromJpeg($source_file); </P> <P>$imgw = imagesx($im);<BR>$imgh = imagesy($im);</P> <P>for ($i=0; $i<$imgw; $i++)<BR>{<BR> for ($j=0; $j<$imgh; $j++)<BR> {<BR> <BR> // get the rgb value for current pixel<BR> <BR> $rgb = ImageColorAt($im, $i, $j); <BR> <BR> // extract each value for r, g, b<BR> <BR> $rr = ($rgb >> 16) & 0xFF;<BR> $gg = ($rgb >> 8) & 0xFF;<BR> $bb = $rgb & 0xFF;<BR> <BR> // get the Value from the RGB value<BR> <BR> $g = round(($rr + $gg + $bb) / 3);<BR> <BR> // grayscale values have r=g=b=g<BR> <BR> $val = imagecolorallocate($im, $g, $g, $g);<BR> <BR> // set the gray value<BR> <BR> imagesetpixel ($im, $i, $j, $val);<BR> }<BR>}</P> <P>header('Content-type: image/jpeg');<BR>imagejpeg($im);<BR>?> pomyślałem także, że może by pierw zapisać obraz z adresu na serwer www za pomocą poniższego skryptu, a później skorzystać z powyższego skryptu Kod <?php<BR>$file = 'http://adres.pl:port/image.jpg';<BR>$newfile = 'image.jpg';</P> <P>copy($file, $newfile);</P> <P>// Save the image as 'image.jpg'<BR>imagejpeg($file, 'image.jpg');</P> <P>// Free up memory<BR>imagedestroy($file);<BR>?> Jednakże pliku także nie zapisuje. Zaznaczam, że nie jest to problem uprawnień zapisu na serwerze. Proszę o pomoc. Ten post edytował djgreen 29.01.2009, 00:10:08 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Szczerze mówiąc, to ten skrypt jest wynalezieniem koła na nowo; wystarczy imagefilter" title="Zobacz w manualu PHP" target="_manual z flagą IMG_FILTER_GRAYSCALE i nie trzeba pisać takich tasiemców. ;p
Poza tym, wstaw kod w odpowiednie bbcode. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie jestem biegły w PHP jak zauważyłeś, a imagefilter próbowałem i mi nie działał, ale wydaje mi się, że to nie jest rozwiązanie mojego problemu, tak jak napisałem na wstępie nie pobiera mi obrazu źródłowego ?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 20:20 |