ďťż

Ł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
  •