Ĺadny brzuch
Witam, proszę o niekasowanie tego topic'u ponieważ jest mi to niezbędne.
Potrzebuję tutorial'a jak napisać program do zmiany całego zdjęcia kolorowego w zdjęcie czarnobiałe.
Załadować dowolny obrazek i po kliknięciu w przycisk zmienić go na czarnobiały i zapisać gdzieś na dysku.
Proszę o pomoc.
www.darkstudio.xorg.pl <-- w trakcie budowy...
Użytkownik buster edytował ten post 07 maj 2006, 18:08
http://4programmers....bfa00abf93b8690
Niestety jestem amatorem i ta strona (z kodem) nic mi nie mówi, chciałbym mieć dostęp do tutoriala jak od postaw napisać program, w którym będzie:
- buttony (guzik do otwarcia pliku graficznego, guzik do zapisu)
- save i open dialog
- jakiekolwiek okienko do wyświetlania obrazka
- i najważniejszy button do zmiany koloru
Na tym forum jest wiele doświadczonych osób, mam nadzieję, że jakaś poświęci mi 10 minut.
1. Wejdz w delphi (zakladam ze to umiesz :D)
2. Wstaw na forme dwa buttony, zmien w ObjectInspectorze wlasciwosc caption pierwszego buttona na: Load, Name ma byc Button1
3. Powtorz krok 2 co do drugiego buttona, ale zmien caption na 'Zmien obrazek' Name ma byc: Button2
4. Teraz z zakladki dialog wstaw komponent o nazwie OpenDialog
5. Przejdz teraz do kodu i w globalnym var (tam na gorze) wstaw: sciezka:string;
5. Teraz kliknij dwukrotnie na przycisk o nazwie Button1 i wpisz:
If opendialog1.Execute then begin sciezka := OpenDialog1.Filename; end;
7. Teraz wstaw komponent TImage na forme z zakladki Additional
8. Kliknij dwukrotnie na Button2 i wpisz:
procedure TForm1.Button1Click(Sender: TObject); var  B : TBitmap;  I, J : Integer; begin try  B := TBitmap.Create;  B.LoadFromFile(sciezka);  For I := 0 to B.Width do   for J := 0 to Height do    B.Canvas.Pixels[i, j] := GetGrayColor(B.Canvas.Pixels[i, j]);  Canvas.Draw(0, 0, B);  Image1.Picture.Bitmap.Assign(b); // To zaraz sprawdze;P  B.Free; except MessageBox(Form1.Handle, 'Sprawdz czy zaladowales poprawnie obrazek!', 'Error', 48); end;
8. I zapomnialem o najwarzniejszym, kliknij dwukrotnie na Button1, przejdz wyrzej i zauwaz takie cos jak Implementation, pod tym wstaw taki kod:
function GetGrayColor (Color: TColor): TColor; const RConst = 77;    GConst = 150;    BConst = 29; var Index: Integer; begin  Index := Byte (Longint (Word (GetRValue (Color)) * RConst +         Word (GetGValue (Color)) * GConst +         Word( GetBValue(Color)) * BConst) shr 8);  Result := RGB (Index, Index, Index); end;
Skompiluj projekt.
Jeszcze wiecej takich postow, moge sie wykazac :D :P
Użytkownik Shooter edytował ten post 07 maj 2006, 19:14
Niestety jestem amatorem i ta strona (z kodem) nic mi nie mówi, chciałbym mieć dostęp do tutoriala jak od postaw napisać program, w którym będzie:
- buttony (guzik do otwarcia pliku graficznego, guzik do zapisu)
- save i open dialog
- jakiekolwiek okienko do wyświetlania obrazka
- i najważniejszy button do zmiany koloru
Na tym forum jest wiele doświadczonych osób, mam nadzieję, że jakaś poświęci mi 10 minut.
Statjacek, robię tak jak mi kazałeś i nic nie wychodzi
Oto filmik jak robiłem:
http://www.speedysha.../933178818.html
W tym kodzie - w złej linijce (zaznaczona jest) masz dwa razy otwarty nawias a raz zamknięty - jak to sobie wyobrażasz? :blink:
a dokładnie masz:
Image.Picture.LoadFromFile((OpenPictureDialog.FileName);
Czytaj jakie Ci na dole błędy wyskakują bo tam zazwyczaj masz odpowiedź (tak jak teraz)
Użytkownik tulio edytował ten post 07 maj 2006, 20:01
sorry, nie zabieraj sie za pisanie tutoriali jesli nie umiesz... i pamietaj umiescic informacje czyjego to autorstwa jest :>
otwieranie i zapisywanie obrazka działa :)
Co zrobić by obrazka nie cięło w połowie np. jak jest większy od okna przeglądarki?
Auto size - true mam...
oto obrazek http://img268.images...ekpolowa7bc.jpg
Użytkownik buster edytował ten post 07 maj 2006, 23:24
masz chyba to zrozumiesz ;)
procedure TForm1.load1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end; procedure TForm1.save1Click(Sender: TObject); begin if savePictureDialog1.Execute then Image1.Picture.savetoFile(savePictureDialog1.FileName); end; function GetGrayColor (Color: TColor): TColor; const RConst = 77; GConst = 150; BConst = 29; var Index: Integer; begin Index := Byte (Longint (Word (GetRValue (Color)) * RConst + Word (GetGValue (Color)) * GConst + Word( GetBValue(Color)) * BConst) shr 8); Result := RGB (Index, Index, Index); end; procedure TForm1.convert1Click(Sender: TObject); var I, J : Integer; begin For I := 0 to image1.Width-1 do for J := 0 to image1.Height-1 do begin form1.Caption := 'prosze czekac... zamieniam pixele...'; image1.Canvas.Pixels[i, j] := GetGrayColor(image1.Canvas.Pixels[i, j]); end; form1.Caption := 'zrobiono.'; end;
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Potrzebuję tutorial'a jak napisać program do zmiany całego zdjęcia kolorowego w zdjęcie czarnobiałe.
Załadować dowolny obrazek i po kliknięciu w przycisk zmienić go na czarnobiały i zapisać gdzieś na dysku.
Proszę o pomoc.
www.darkstudio.xorg.pl <-- w trakcie budowy...
Użytkownik buster edytował ten post 07 maj 2006, 18:08
http://4programmers....bfa00abf93b8690
Niestety jestem amatorem i ta strona (z kodem) nic mi nie mówi, chciałbym mieć dostęp do tutoriala jak od postaw napisać program, w którym będzie:
- buttony (guzik do otwarcia pliku graficznego, guzik do zapisu)
- save i open dialog
- jakiekolwiek okienko do wyświetlania obrazka
- i najważniejszy button do zmiany koloru
Na tym forum jest wiele doświadczonych osób, mam nadzieję, że jakaś poświęci mi 10 minut.
1. Wejdz w delphi (zakladam ze to umiesz :D)
2. Wstaw na forme dwa buttony, zmien w ObjectInspectorze wlasciwosc caption pierwszego buttona na: Load, Name ma byc Button1
3. Powtorz krok 2 co do drugiego buttona, ale zmien caption na 'Zmien obrazek' Name ma byc: Button2
4. Teraz z zakladki dialog wstaw komponent o nazwie OpenDialog
5. Przejdz teraz do kodu i w globalnym var (tam na gorze) wstaw: sciezka:string;
5. Teraz kliknij dwukrotnie na przycisk o nazwie Button1 i wpisz:
If opendialog1.Execute then begin sciezka := OpenDialog1.Filename; end;
7. Teraz wstaw komponent TImage na forme z zakladki Additional
8. Kliknij dwukrotnie na Button2 i wpisz:
procedure TForm1.Button1Click(Sender: TObject); var  B : TBitmap;  I, J : Integer; begin try  B := TBitmap.Create;  B.LoadFromFile(sciezka);  For I := 0 to B.Width do   for J := 0 to Height do    B.Canvas.Pixels[i, j] := GetGrayColor(B.Canvas.Pixels[i, j]);  Canvas.Draw(0, 0, B);  Image1.Picture.Bitmap.Assign(b); // To zaraz sprawdze;P  B.Free; except MessageBox(Form1.Handle, 'Sprawdz czy zaladowales poprawnie obrazek!', 'Error', 48); end;
8. I zapomnialem o najwarzniejszym, kliknij dwukrotnie na Button1, przejdz wyrzej i zauwaz takie cos jak Implementation, pod tym wstaw taki kod:
function GetGrayColor (Color: TColor): TColor; const RConst = 77;    GConst = 150;    BConst = 29; var Index: Integer; begin  Index := Byte (Longint (Word (GetRValue (Color)) * RConst +         Word (GetGValue (Color)) * GConst +         Word( GetBValue(Color)) * BConst) shr 8);  Result := RGB (Index, Index, Index); end;
Skompiluj projekt.
Jeszcze wiecej takich postow, moge sie wykazac :D :P
Użytkownik Shooter edytował ten post 07 maj 2006, 19:14
Niestety jestem amatorem i ta strona (z kodem) nic mi nie mówi, chciałbym mieć dostęp do tutoriala jak od postaw napisać program, w którym będzie:
- buttony (guzik do otwarcia pliku graficznego, guzik do zapisu)
- save i open dialog
- jakiekolwiek okienko do wyświetlania obrazka
- i najważniejszy button do zmiany koloru
Na tym forum jest wiele doświadczonych osób, mam nadzieję, że jakaś poświęci mi 10 minut.

Statjacek, robię tak jak mi kazałeś i nic nie wychodzi
Oto filmik jak robiłem:
http://www.speedysha.../933178818.html
W tym kodzie - w złej linijce (zaznaczona jest) masz dwa razy otwarty nawias a raz zamknięty - jak to sobie wyobrażasz? :blink:
a dokładnie masz:
Image.Picture.LoadFromFile((OpenPictureDialog.FileName);
Czytaj jakie Ci na dole błędy wyskakują bo tam zazwyczaj masz odpowiedź (tak jak teraz)
Użytkownik tulio edytował ten post 07 maj 2006, 20:01
sorry, nie zabieraj sie za pisanie tutoriali jesli nie umiesz... i pamietaj umiescic informacje czyjego to autorstwa jest :>
otwieranie i zapisywanie obrazka działa :)
Co zrobić by obrazka nie cięło w połowie np. jak jest większy od okna przeglądarki?
Auto size - true mam...
oto obrazek http://img268.images...ekpolowa7bc.jpg
Użytkownik buster edytował ten post 07 maj 2006, 23:24
masz chyba to zrozumiesz ;)
procedure TForm1.load1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end; procedure TForm1.save1Click(Sender: TObject); begin if savePictureDialog1.Execute then Image1.Picture.savetoFile(savePictureDialog1.FileName); end; function GetGrayColor (Color: TColor): TColor; const RConst = 77; GConst = 150; BConst = 29; var Index: Integer; begin Index := Byte (Longint (Word (GetRValue (Color)) * RConst + Word (GetGValue (Color)) * GConst + Word( GetBValue(Color)) * BConst) shr 8); Result := RGB (Index, Index, Index); end; procedure TForm1.convert1Click(Sender: TObject); var I, J : Integer; begin For I := 0 to image1.Width-1 do for J := 0 to image1.Height-1 do begin form1.Caption := 'prosze czekac... zamieniam pixele...'; image1.Canvas.Pixels[i, j] := GetGrayColor(image1.Canvas.Pixels[i, j]); end; form1.Caption := 'zrobiono.'; end;