Autor |
Beitrag |
Claudius
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 06.12.02 17:59
Hi,
ich habe ein Problem. Und zwar muss ich eine Bitmap einlesen und dann schwarze Pixel rausfiltern und diese in einArray schreiben. Im Grunde läuft das ganze auf BarCode einlesen raus. Kann mir da jemand gut weiter helfen? Es wäre dringend. Wäre echt sehr nett.
Schöne Grüße an alle 
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 06.12.02 18:03
Hei!
Kenn mich damit zwar nicht aus, aber das hier ist doch so ähnlich, oder?
Vielleicht hilft es dir ja weiter.
|
|
littlemike1005
      
Beiträge: 187
|
Verfasst: Fr 06.12.02 18:21
diesen quellcode oder besser den wichtigen teil habe ich von aya (DANKE noch mal) dieses progi. liest farbwerte aus model es um und dein prob. ist gelöst.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type TForm1 = class(TForm) Image1: TImage; Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; bit: TBitmap; Color: TColor; lauf1: integer; begin jpeg:=TJPEGImage.Create; jpeg.LoadFromFile('f:\12jpg.jpg'); image1.Picture.LoadFromFile('f:\12jpg.jpg'); bit:=TBitmap.Create; bit.Assign(jpeg); listbox1.Clear; for lauf1:=0 to 200 do begin Color:=bit.Canvas.Pixels[lauf1,2]; listbox1.items.Add(inttostr(color)); end; jpeg.Free; bit.Free;
end;
end. |
|
|
Claudius 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 10.12.02 14:41
Titel: Danke für den Code...
aber leider passiert beim ausführen des Programms nichts.
BEi der Syntaxprüfung treten keine Fehler auf, wenn ich aber den Button anklicke, geschieht nichts. Mach ich vielleicht irgendwas falsch?
Wäre nett, wenn ich eine Antwort bekommen würde.
mfg
Claudius 
|
|
littlemike1005
      
Beiträge: 187
|
Verfasst: Di 10.12.02 15:24
Titel: @claudius
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type TForm1 = class(TForm) Image1: TImage; Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; bit: TBitmap; Color: TColor; lauf1: integer; begin jpeg:=TJPEGImage.Create; jpeg.LoadFromFile('f:\12jpg.jpg'); image1.Picture.LoadFromFile('f:\12jpg.jpg'); bit:=TBitmap.Create; bit.Assign(jpeg); listbox1.Clear; for lauf1:=0 to 200 do begin Color:=bit.Canvas.Pixels[lauf1,2]; listbox1.items.Add(inttostr(color)); end; jpeg.Free; bit.Free;
end;
end. |
jpeg.LoadFromFile('f:\12jpg.jpg'); <<<<<< Hier muss Du Dein Pfad und Dateiname eintragen
image1.Picture.LoadFromFile('f:\12jpg.jpg'); <<<<<< Hier muss Du Dein Pfad und Dateiname eintragen
und du darfst nicht einfach die komponenten in dein for packen und das programm rein kopieren das geht nicht
du musst es schon von hand machen. du musst schon ein doppel click auf den button machen und dan denn inhalt von TForm1.Button1Click(Sender: TObject); in das erzeugte ereigniss reinkopieren.
|
|
Claudius 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 10.12.02 15:27
Titel: Ist in Ordnung
Danke für die Hilfe, aber das war schon klar, das mein Pfad eingetragen werden muss. Das Problem hab ich aber jetzt beseitigt. Es wäre aber schön, wenn du mir zu folgendem helfen könntest: Dein Programm funktioniert und gibt irgendwelche Zahlenkombinationen aus. Mein Programm muss aber BarCode lesen können, d.h. ich muss Zeile für Zeile durchgehen und schwarze Pixel suchen. Sobald ich einen gefunden hab, sollte dieser in ein Array geschrieben werden.
mfg
Claudius
|
|
littlemike1005
      
Beiträge: 187
|
Verfasst: Di 10.12.02 15:40
Titel: @Claudius
ich geh mal davon aus das jedes barcode jpg gleich gross ist (x,y) weil ich weiss auch noch nicht wie ich die grösse eines jpg´s ermittle.
gehen wir mal davon aus es ist x=200 und y=100
erstell dir ein bild (black.jpg) in photoshop oder so. mit weissem background und z.b. einem schwarzem strich (wie beim barcode) dann starte mein progi und du erhälst in der listbox alle x und y koordinaten wo sich ein schwarzer pixel befindet.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type TForm1 = class(TForm) Image1: TImage; Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; bit: TBitmap; Color: TColor; lauf1: integer; x,y : integer;
begin jpeg:=TJPEGImage.Create; jpeg.LoadFromFile('f:\black.jpg'); image1.Picture.LoadFromFile('f:\black.jpg'); bit:=TBitmap.Create; bit.Assign(jpeg); listbox1.Clear;
for x:=0 to 200 do begin for y:=0 to 100 do begin Color:=bit.Canvas.Pixels[x,y]; if color=0 then begin listbox1.items.Add(inttostr(x)+' '+inttostr(y)); end; end; end;
jpeg.Free; bit.Free;
end;
end. |
|
|
Claudius 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 10.12.02 16:09
Titel: Danke...
funktioniert einwandfrei. Nun muss ich bloß noch eine Funktion schreiben, die .jpg in .bmp umwandelt
|
|
|