Autor Beitrag
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 21.03.07 19:20 
Wie konvertiere ich eine Bitmap in das PNG-Format?[meta]PNG, GIF, BMP, Konvertieren, Konvertierung, Transparenz, Halbtransparenz[/meta]

Lösung: [url=www.delphi-forum.de/...PictureConvert[/url]

Hallo!

Also, ich will einen Homepage-Gestalter programmieren, aber bis jetzt muss ich die Bilder immer im BMP-Format speichern, weil die automatisch erzeugt werden (z.B. beschriftete Buttons). Aber im Web sind BMPs einfach doof.
Kennt jemand eine Komponente, Prozedur oder sowas in Delphi, die PNGs unterstützt?
Auch gut wäre eine EXE, die man mit Parameter starten kann, und die dann ohne viel anzuzeigen einfach die angegebene BMP in PNG umwandelt? Zur Not würd auch GIF gehen, aber GIF ist immer noch etwas größer als PNG.

Vielen Dank schonmal für die Antworten.

Ach ja, wenn jemand weiß, wie Transparenz in GIF- und PNG-Dateien eingefügt wird, die Frage ist immer noch offen.

MfG, Yogu


Zuletzt bearbeitet von Yogu am Sa 29.12.07 18:16, insgesamt 6-mal bearbeitet
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mi 21.03.07 19:40 
Also, such bei Google einfach mal Delphi und PNG dort findest du:
pngdelphi.sourceforge.net/
Da lädst du die Komponente runter und bindest sie ins Programm ein, so kannst du Bilder im PNG Format laden und speichern (ganz normal im Image1)

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 22.03.07 10:18 
Hallo,

nicht-transparente Bilder speichert man im Web für gewöhnlich im Format JPEG und das wird schon von Haus aus in der Unit jpeg mitgeliefert.
Für jene anderen hast du ja jetzt den Link ein Beitrag weiter oben!

Gruß Hape!
Yogu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 22.03.07 20:09 
user profile iconwulfskin hat folgendes geschrieben:
Hallo,

nicht-transparente Bilder speichert man im Web für gewöhnlich im Format JPEG und das wird schon von Haus aus in der Unit jpeg mitgeliefert.
Für jene anderen hast du ja jetzt den Link ein Beitrag weiter oben!

Gruß Hape!


Ich habe ja nicht gegen JPEG, wenn es um Fotos geht, aber für alles, was irgendwelche Farbverläufe oder Farbflächen hat, ist meiner Meinung nach JPEG nicht die richtige Wahl. Die Buttons und so sehen einfach viel schlechter aus, als sie eigentlich sind, weil überall die Ränder pixelig sind. PNG ist außerdem mehr als 10% kleiner als JPG, deshalb für Web einfach gut geeignet.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 22.03.07 20:24 
user profile iconYogu hat folgendes geschrieben:
PNG ist außerdem mehr als 10% kleiner als JPG, deshalb für Web einfach gut geeignet.

Das stimmt nicht immer. Bei Bildern mit sehr vielen verschiedeben Farben ist JPG oft besser geeignet.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Yogu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 22.03.07 20:43 
Ich hab jetzt diese PNG-Unit kopiert in das Lib-Verzeichnis (stimmt das???). Wenn ich diese pngimage.pas einbinde, erkennt Delphi 3(?) den Befehl overload; nicht. Ist das höheres Delphi? Es kommt nach so einer Prozedur-Dekleration. Wenn ich diesen Befehl entferne, funktioniert soweit alles.
Aber wie laden ich zum Beispiel eine BMP und speichere sie als PNG? Ich sehe nur die Prozeduren LoadFromFile und SaveToFile. Ein Object wie Picture oder so habe ich nicht gefunden. Wie greife ich denn auf das Bild zu?
Wenn ich das Programm starte, kommt die Fehlermeldung, dass die Datei einen falschen Header hat oder so.
Also kurz und knapp: Ich hätte gerne ein Beispiel für Delphi 3(!)
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Do 22.03.07 20:46 
Aus der pngdelphi-Dokumentation:
ausblenden volle Höhe Delphi-Quelltext
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:
uses pngimage;

procedure BitmapFileToPNG(const Source, Dest: String);
var
  Bitmap: TBitmap;
  PNG: TPNGObject;
begin
  Bitmap := TBitmap.Create;
  PNG := TPNGObject.Create;
  {In case something goes wrong, free booth Bitmap and PNG}
  try
    Bitmap.LoadFromFile(Source);
    PNG.Assign(Bitmap);    //Convert data into png
    PNG.SaveToFile(Dest);
  finally
    Bitmap.Free;
    PNG.Free;
  end
end;

procedure PNGFileToBitmap(const Source, Dest: String);
var
  Bitmap: TBitmap;
  PNG: TPNGObject;
begin
  PNG := TPNGObject.Create;
  Bitmap := TBitmap.Create;
  {In case something goes wrong, free booth PNG and Bitmap}
  try
    PNG.LoadFromFile(Source);
    Bitmap.Assign(PNG);    //Convert data into bitmap
    Bitmap.SaveToFile(Dest);
  finally
    PNG.Free;
    Bitmap.Free;
  end
end;
Yogu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 22.03.07 20:54 
Danke, Danniolo!

Auf Assign wäre ich garnicht draufgekommen. Ich hätte gedacht, tpngimage ist so wie timage.

Edit:
Naja, doch nicht so ganz. Wie krieg ich die Unit pngimage kompatibel zu Delphi 3? Ich hatte ja schon das overload; erwähnt. Oder ist Delphi 3 einfach out und nicht geht mehr damit?
Aber trotzdem Danke für Danniolo.
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Do 22.03.07 21:14 
Das Problem hatte ich auch. Siehe www.delphi-forum.de/....php?p=273062#273062
Yogu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 22.03.07 21:43 
Supa! Klappt! :D :D :D :D :D :D :D :D :D :D :D
Jetzt nur noch eine Frage:
Wie füge ich (Halb)Transparenz ein?
Danniolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 693



BeitragVerfasst: Do 22.03.07 21:45 
Wo willst du (Halb-)Transparenz einfügen?
Im Zweifelsfalle einfach ein transparentes PNG laden..
Yogu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 22.03.07 21:48 
Ich erzeuge mit Delphi eine Bitmap, zum Beispiel für einen Button. Der hat aber runde Ecken, und deshalb will ich außen Transparenz einfügen. Natürlich geht das nicht in der Bitmap, deshalb muss das ja irgendwie mit dem PNG-Objekt gehen (oder auch nicht). Dann speichere ich das komplett automatisch erzeugte Bild als PNG.
Yogu_
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.03.07 13:00 
So. Jetzt habe ich ein bisschen rumgebastelt, und das kam raus:

ausblenden volle Höhe Delphi-Quelltext
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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
//-------------------------------------------------------------------------
//------------------------ Bildkonverter ----------------------------------
//-------------------------------------------------------------------------
//----------------------- (C) 2007 by Yogu --------------------------------
//-------------------------------------------------------------------------
//---- Konvertiert die Dateitypen BMP, PNG und JPG in BMP, PNG und JPG ----
//-------------------------------------------------------------------------

unit PictureConvert;

interface

//       Standart          BMP      PNG      JPG
uses SysUtils, Dialogs, Graphics, PNGImage, JPEG;

type  //Bildtyp  NIL     BMP    PNG    JPG
  TPictureType=(ptNone, ptBMP, ptPNG, ptJPG);

//Konvertiert eine Bilddatei 'Source' in die Datei 'Dest' mit dem
//Bilddateityp 'PictureType'. Wenn keine 'Dest'-Datei angegeben ist,
//wird die 'Source'-Datei mit der entsprechenden Endung genommen. Wenn
//kein Typ in 'Dest' angegeben ist, wird dieser entsprechend 'PictureType'
//angehängt.
procedure ConvertPicture(Source, Dest: String; PictureType: TPictureType);

//Lädt eine BMP-Datei und gibt diese als TBitmap zurück
function LoadBMPFromFile(const FileName: String): TBitmap;

//Lädt eine PNG-Datei und gibt diese als TBitmap zurück
function LoadPNGFromFile(const FileName: String): TBitmap;

//Lädt eine JPG-Datei und gibt diese als TBitmap zurück
function LoadJPGFromFile(const FileName: String): TBitmap;

//Speichert eine TBitmap als BMP
procedure SaveBMPToFile(Picture: TBitmap; FileName: String);

//Speichert eine TBitmap als PNG
procedure SavePNGToFile(Picture: TBitmap; FileName: String);

//Speichert eine TBitmap als JPG
procedure SaveJPGToFile(Picture: TBitmap; FileName: String);

implementation

procedure ConvertPicture(Source, Dest: String; PictureType: TPictureType);
var Ext: String; Picture: TBitmap;
begin
  //Fals Zieldatei '', Sourcedatei ohne Endung
  if Dest = '' then
    Dest := Copy(Source, 0, Length(Source)-Length(Ext));
  //Richtuge Endung hinzufügen, falls keine angegeben
  if ExtractFileExt(Dest) = '' then
  begin
    if PictureType = ptBMP then Dest := Dest + '.bmp';
    if PictureType = ptPNG then Dest := Dest + '.png';
    if PictureType = ptJPG then Dest := Dest + '.jpg';
  end;

  //Endung der Sorucedatei ermitteln
  Ext := LowerCase(ExtractFileExt(Source));
  //'jpeg' als 'jpg', weil das gleiche
  if Ext = '.jpeg' then Ext := '.jpg';
  //Bild erzeugen, falls keins geladen wird
  Picture := TBitmap.Create;

  //Richtigen Bildtyp laden
  if Ext = '.bmp' then Picture := LoadBMPFromFile(Source);
  if Ext = '.png' then Picture := LoadPNGFromFile(Source);
  if Ext = '.jpg' then Picture := LoadJPGFromFile(Source);

  //Als PictureType speichern
  if PictureType = ptBMP then SaveBMPToFile(Picture, Dest);     
  if PictureType = ptPNG then SavePNGToFile(Picture, Dest);
  if PictureType = ptJPG then SaveJPGToFile(Picture, Dest);
end;

function LoadBMPFromFile(const FileName: String): TBitmap;
begin
  //Bild erzeugen
  Result := TBitmap.Create;
  try
    //Bild laden, falls vorhanden
    Result.LoadFromFile(FileName);
  finally
  end;
end;

function LoadPNGFromFile(const FileName: String): TBitmap;
var PNG: TPNGObject;
begin
  //PNG und Bild erzeugen
  PNG := TPNGObject.Create;
  Result := TBitmap.Create;
  try
    //PNG laden, falls vorhanden
    PNG.LoadFromFile(FileName);
    //PNG Bild zuweisen
    Result.Assign(PNG);
  finally
    //PNG wieder freigeben
    PNG.Free;
  end;
end;

function LoadJPGFromFile(const FileName: String): TBitmap;
var JPG: TJPEGImage;
begin
  //JPG und Bild erzeugen
  JPG := TJPEGImage.Create;
  Result := TBitmap.Create;
  try
    //JPG laden, falls vorhanden
    JPG.LoadFromFile(FileName);
    //JPG Bild zuweisen
    Result.Assign(JPG);
  finally
    //JPG wieder löschen
    JPG.Free;
  end;
end;

procedure SaveBMPToFile(Picture: TBitmap; FileName: String);
begin
  try
    //Falls möglich, Bild speichern
    Picture.SaveToFile(FileName);
  finally
  end;
end;

procedure SavePNGToFile(Picture: TBitmap; FileName: String);
var PNG: TPNGObject;
begin
  //PNG erzeugen
  PNG := TPNGObject.Create;
  try
    //Bild PNG zuweisen
    PNG.Assign(Picture);
    //PNG speichern
    PNG.SaveToFile(FileName);
  finally
    //PNG wieder freigeben
    PNG.Free;
  end;
end;

procedure SaveJPGToFile(Picture: TBitmap; FileName: String);
var JPG: TJPEGImage;
begin
  //JPG erzeugen
  JPG := TJPEGImage.Create;
  try
    //Bild JPG zuweisen
    JPG.Assign(Picture);
    //JPG speichern
    JPG.SaveToFile(FileName);
  finally
    //JPG wieder freigeben
    JPG.Free;
  end;
end;

end.


Und ein Programm dazu:

ausblenden volle Höhe Delphi-Quelltext
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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, ComCtrls, StdCtrls, ExtDlgs, PictureConvert;

type
  TForm1 = class(TForm)
    FileView: TListView;
    TopPnl: TPanel;
    AddBtn: TButton;
    DeleteBtn: TButton;
    ConvertBtn: TButton;
    QuitBtn: TButton;
    OpenDialog: TOpenPictureDialog;
    SaveDialog: TSavePictureDialog;
    procedure FormCreate(Sender: TObject);
    procedure QuitBtnClick(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure ConvertBtnClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FileViewMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DeleteBtnClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  //Größen der Spalten in Prozent
  FileWidth: Extended;
  TypeWidth: Extended;
  DirWidth:  Extended;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.Title := Caption;
  //Größen der Spalten zuweisen
  FileView.Columns.Items[1].Width := 100;
  FileView.Columns.Items[2].Width := 300;
  FileView.Columns.Items[0].Width := FileView.Width-4-
    FileView.Columns.Items[1].Width-FileView.Columns.Items[2].Width;
  //Prozentangeben der Spalten speichern
  FileWidth := FileView.Columns.Items[0].Width / (FileView.Width-4);
  TypeWidth := FileView.Columns.Items[1].Width / (FileView.Width-4);
  DirWidth  := FileView.Columns.Items[2].Width / (FileView.Width-4);

  OpenDialog.InitialDir := Application.ExeName;
end;

procedure TForm1.QuitBtnClick(Sender: TObject);
begin
  //Programm beenden
  Close;
end;

procedure TForm1.AddBtnClick(Sender: TObject);
var i: Integer; FileName, FileType, FilePath: String;
begin
  //Datei hinzufügen
  if OpenDialog.Execute then
  begin
    //Alle ausgewählten Dateien abklappern
    for i := 0 to OpenDialog.Files.Count-1 do
    begin
      //Item erzeugen
      with FileView.Items.Add do
      begin
        //Daten ermitteln
        FileName := ExtractFileName(OpenDialog.Files.Strings[i]);
        FileType := ExtractFileExt(OpenDialog.Files.Strings[i]);
        FilePath := ExtractFilePath(OpenDialog.Files.Strings[i]);
        FileType := Copy(UpperCase(FileType),2,Length(FileType));
        //Daten anzeigen
        Caption := FileName;
        SubItems.Add(FileType);
        SubItems.Add(FilePath);
      end;
    end;
  end;
end;

procedure TForm1.ConvertBtnClick(Sender: TObject);
var i: Integer; FileType: TPictureType; Ext, Source, Dest, Path, FileName: String;
begin
  //Ordner zuweisen
  SaveDialog.InitialDir := OpenDialog.FileName;
  //Dialogfeld anzeigen
  if SaveDialog.Execute then
  begin
    //Endung der Dateien ermitteln
    Ext := LowerCase(ExtractFileExt(SaveDialog.FileName));
    if Ext = '.jpeg' then Ext := '.jpg';
    FileType := ptNone;
    if Ext = '.bmp' then FileType := ptBMP;
    if Ext = '.png' then FileType := ptPNG;
    if Ext = '.jpg' then FileType := ptJPG;
    //Falls keine Endung eingegeben, ausgewählten Filter übernehmen
    if FileType = ptNone then
    begin
      if SaveDialog.FilterIndex = 1 then FileType := ptBMP;
      if SaveDialog.FilterIndex = 2 then FileType := ptPNG;
      if SaveDialog.FilterIndex = 3 then FileType := ptJPG;
    end;
    //Falls Dateityp immernoch undefiniert, Fehlermeldung
    if FileType = ptNone then
    begin
      Application.MessageBox('Der angegebene Dateityp ist kein zugelassener.',
        'Fehler in Eingabe'16);
      Exit;
    end;
    //Alle Dateien abklappern
    for i := 0 to FileView.Items.Count-1 do
    begin
      //Quelle ermitteln
      Source := FileView.Items.Item[i].SubItems[1]+FileView.Items.Item[i].Caption;
      //Ziel ermitteln
      Path := ExtractFilePath(SaveDialog.FileName);
      FileName := FileView.Items.Item[i].Caption;
      Ext := ExtractFileExt(FileName);
      Dest := Path+Copy(FileName, 0, Length(FileName)-Length(Ext));
      //Bild konvertieren
      ConvertPicture(Source, Dest, FileType);
    end;
  end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  //Bei Größenänderung neue Spaltengößen zuweisen (von Prozentangaben)
  FileView.Columns.Items[0].Width := Round(FileWidth * (FileView.Width-4));
  FileView.Columns.Items[1].Width := Round(TypeWidth * (FileView.Width-4));
  FileView.Columns.Items[2].Width := Round(DirWidth  * (FileView.Width-4));
end;

procedure TForm1.FileViewMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  //Bei Spaltengrößenänderung, Prozentangaben speichern
  FileWidth := FileView.Columns.Items[0].Width / (FileView.Width-4);
  TypeWidth := FileView.Columns.Items[1].Width / (FileView.Width-4);
  DirWidth  := FileView.Columns.Items[2].Width / (FileView.Width-4);
end;

procedure TForm1.DeleteBtnClick(Sender: TObject);
var i: Integer;
begin
  //Markierte Einträge löschen
  for i := 0 to FileView.Items.Count-1 do
  begin
    if FileView.Items.Item[i].Selected then FileView.Items.Item[i].Delete;
  end;
end;

end.


Und das Formular dazu:

ausblenden volle Höhe Delphi-Quelltext
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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
object Form1: TForm1
  Left = 256
  Top = 140
  Width = 696
  Height = 480
  Caption = 'Bildkonverter'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OnCreate = FormCreate
  OnResize = FormResize
  PixelsPerInch = 96
  TextHeight = 13
  object FileView: TListView
    Left = 0
    Top = 33
    Width = 688
    Height = 420
    Align = alClient
    Columns = <
      item
        Caption = 'Dateiname'
        Width = 300
      end
      item
        Caption = 'Dateityp'
        Width = 100
      end
      item
        Caption = 'Im Ordner'
        Width = 200
      end>
    MultiSelect = True
    OnMouseMove = FileViewMouseMove
    TabOrder = 0
    ViewStyle = vsReport
  end
  object TopPnl: TPanel
    Left = 0
    Top = 0
    Width = 688
    Height = 33
    Align = alTop
    BevelOuter = bvNone
    TabOrder = 1
    object AddBtn: TButton
      Left = 0
      Top = 0
      Width = 113
      Height = 33
      Caption = 'Hinzufügen'
      Font.Charset = ANSI_CHARSET
      Font.Color = clWindowText
      Font.Height = -19
      Font.Name = 'Arial'
      Font.Style = []
      ParentFont = False
      TabOrder = 0
      OnClick = AddBtnClick
    end
    object DeleteBtn: TButton
      Left = 112
      Top = 0
      Width = 113
      Height = 33
      Caption = 'Entfernen'
      Font.Charset = ANSI_CHARSET
      Font.Color = clWindowText
      Font.Height = -19
      Font.Name = 'Arial'
      Font.Style = []
      ParentFont = False
      TabOrder = 1
      OnClick = DeleteBtnClick
    end
    object ConvertBtn: TButton
      Left = 224
      Top = 0
      Width = 113
      Height = 33
      Caption = 'Konvertieren'
      Font.Charset = ANSI_CHARSET
      Font.Color = clWindowText
      Font.Height = -19
      Font.Name = 'Arial'
      Font.Style = []
      ParentFont = False
      TabOrder = 2
      OnClick = ConvertBtnClick
    end
    object QuitBtn: TButton
      Left = 336
      Top = 0
      Width = 113
      Height = 33
      Caption = 'Beenden'
      Font.Charset = ANSI_CHARSET
      Font.Color = clWindowText
      Font.Height = -19
      Font.Name = 'Arial'
      Font.Style = []
      ParentFont = False
      TabOrder = 3
      OnClick = QuitBtnClick
    end
  end
  object OpenDialog: TOpenPictureDialog
    Filter = 
      'Alle Bilder (*.bmp; *.png; *.jpg)|*.bmp; *.png; *.jpg; *.jpeg|Bi' +
      'tmaps (*.bmp)|*.bmp|Portable Network-Grafiken (*.png)|*.png|JPEG' +
      ' File Interchange-Format (*.jpg; *.jpeg)|*.jpg; *.jpeg'
    Options = [ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist]
    Left = 456
  end
  object SaveDialog: TSavePictureDialog
    FileName = 'Dateiname wird ignoriert'
    Filter = 
      'Bitmaps (*.bmp)|*.bmp|Portable Network-Grafiken (*.png)|*.png|JP' +
      'EG File Interchange-Format (*.jpg; *.jpeg)|*.jpg; *.jpeg'
    Options = [ofHideReadOnly, ofPathMustExist]
    Left = 488
  end
end


PS: Glaubt mir, ich bin schon Yogu, nur tut mein richtiges Konto tut gerade nicht.