Zum Tool JPG-Verkleinern.
Zurück zu Delphi-Code.

Der Code für das Tool JPG-Verkleiner

Vieleicht Hilft es den ein oder anderen und bring ihn etwas weiter. Der Code darf frei verwendet werden und geändert. Bei Gewerblicher Nutzung hat man mich zu Fragen.

Hinweis es sind noch nicht alle Idioten sicherungen drin wie, 
das keine Buchstaben eingeben werden können in einer Größenangabe.
Oder das wenigsten ein Buchstabe im Namen sein solte, eigentlich 
logisch ohne Buchstaben kein Datei-Name.  :) 
Ja man muss ja nicht alles vorkauen.  :)


     	   

Wer Fehler findet kann die Kostenlos behalten!

//--------------------------------------------------------------------------------------------- { Ich über nehme keine Verantwortung alles auf eigenes Risiko. Der Code darf frei benutzt werden und verbessert und geändert. Bei Commercialer Nutzung hat man mich zu fragen. } unit U1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, jpeg, FileCtrl, FileSiceListBox, ExtCtrls, Spin, StylesButton, MyPanel2, ImgList; type TForm1 = class(TForm) Panel1: TPanel; ListBox2: TListBox; Panel2: TPanel; Label6: TLabel; ListBox1: TListBox; Panel3: TPanel; Splitter1: TSplitter; Label7: TLabel; StylesButton1: TStylesButton; StylesButton2: TStylesButton; BildPanel1: TBildPanel; Label5: TLabel; Label8: TLabel; DirectoryListBox1: TDirectoryListBox; DriveComboBox1: TDriveComboBox; FileSiceListBox1: TFileSiceListBox; Label10: TLabel; Label11: TLabel; BildPanel2: TBildPanel; Label9: TLabel; Edit3: TEdit; SpinEdit1: TSpinEdit; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; ImageList1: TImageList; Bevel1: TBevel; procedure Edit1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); procedure DirectoryListBox1Change(Sender: TObject); procedure FileSiceListBox1DblClick(Sender: TObject); procedure FileSiceListBox1Click(Sender: TObject); procedure StylesButton2Click(Sender: TObject); procedure StylesButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses ShellApi; {$R *.DFM} procedure TForm1.Edit1Change(Sender: TObject); begin Edit2.Text := Edit1.Text; end; procedure TForm1.FormCreate(Sender: TObject); var s : String; begin s := ''; s := Application.Exename[1]; if s <> 'C' then begin FileSiceListBox1.FileName := s + ':\Users\Ich\Pictures\'; end else begin FileSiceListBox1.FileName := 'C:\Users\Ich\Pictures\'; end; If Not DirectoryExists(s + ':\Users\Ich\Pictures') then FileSiceListBox1.FileName := GetCurrentDir + '\'; end; // Damit man die Bilder begutachten kann ob alles gut verlaufen ist. procedure TForm1.ListBox1DblClick(Sender: TObject); var s: String; begin if FileExists(ListBox1.Items.Strings[ListBox1.ItemIndex]) then begin s := ListBox1.Items.Strings[ListBox1.ItemIndex]; ShellExecute(handle, nil, Pchar(s), nil, nil, SW_SHOW); end; end; procedure TForm1.DirectoryListBox1Change(Sender: TObject); begin Label8.Caption := DirectoryListBox1.Directory +'\'; end; // Bild bei doppelklick verkleinern und als Neues Bild mit Neuen Namen und // durch nummeriert speicher in Listbox zum Überbrüfen. procedure TForm1.FileSiceListBox1DblClick(Sender: TObject); var Bild1, Bild2: Tbitmap; jpg, jpg2 : TJpegImage; i, NrPos: Integer; Hoehe, Breite: Real; s, s2, s3: String; begin Screen.Cursor := crHourGlass; s := ''; s2 := ''; NrPos :=0; Hoehe := 10; Breite := 10; s := FileSiceListBox1.FileName; NrPos := Pos('g:', s); if NrPos = 0 then NrPos := Pos('G:', s); // Für Große Buchstaben s := Copy(s, 0, NrPos) ; //-------------------------------------------------------- Bild1 := TBitmap.Create; Bild2 := TBitmap.Create; jpg := TJpegImage.Create; jpg2 := TJpegImage.Create; try Bild1.PixelFormat := pf24Bit; jpg.LoadFromFile(s); // Bild laden Pfad und DateiName übergeben ListBox2.Items.Add(s); // Pfad und Alte-Dateien in Listbox zum Löschen sichern Bild1.Assign(jpg); // JPG den Bitmap zuweisen s2 := ExtractFilePath(s); // Pfad bekommen // Prozente ausrechnen für Verkleinerung if Bild1.Width > Bild1.Height then begin Breite := Bild1.Width / 100; Breite := Breite * StrtoInt(Edit2.text); Hoehe := Bild1.Height / 100; Hoehe := Hoehe * StrtoInt(Edit1.text); Bild2.Width := Trunc(Breite); Bild2.Height := Trunc(Hoehe); end //if else begin Breite := Bild1.Width / 100; Breite := Breite * StrtoInt(Edit2.text); Hoehe := Bild1.Height / 100; Hoehe := Hoehe * StrtoInt(Edit1.text); Bild2.Width := Trunc(Breite); Bild2.Height := Trunc(Hoehe); end; // else SetStretchBltMode(Bild2.Canvas.Handle, HALFTONE); StretchBlt(Bild2.Canvas.Handle, 0, 0, Bild2.Width, Bild2.Height, Bild1.Canvas.Handle, 0, 0, Bild1.Width, Bild1.Height, SRCCOPY); // Pfad mit neuen Dateinamen und Nummerierung zusammen stellen s3 := s2 + Edit3.Text + IntTostr(SpinEdit1.Value) +'.jpg'; SpinEdit1.Value := SpinEdit1.Value +1; // Zähler erhöhen i := 0; // Zur Sicherheit fahls eine Datei mit diesen namen schon vorhanden ist if FileExists(s3) then begin while i = 0 do begin // Pfad mit neuen Dateinamen und Nummerierung zusammen stellen s3 := s2 + Edit3.Text + IntTostr(SpinEdit1.Value) +'.jpg'; SpinEdit1.Value := SpinEdit1.Value +1; // Zähler erhöhen if not FileExists(s3) then i := 1; end; // while end; // if ListBox1.Items.Add(s3); // Pfad und Neuen-Dateiname in Listbox zu Überprüfen der Bilder. jpg2.Assign(Bild2); // Bitmap wieder JPG zuweisen jpg2.SaveToFile(s3); finally Bild1.Free; Bild2.Free; jpg.free; jpg2.free; end; Screen.Cursor := crDefault; end; // Höhe und Breite vom Bild ausgeben procedure TForm1.FileSiceListBox1Click(Sender: TObject); var Bild1: Tbitmap; jpg: TJpegImage; s: String; NrPos: Integer; begin Screen.Cursor := crHourGlass; s := ''; NrPos :=0; s := FileSiceListBox1.FileName; NrPos := Pos('g:', s); if NrPos = 0 then NrPos := Pos('G:', s); // Für Große Buchstaben s := Copy(s, 0, NrPos) ; // Höhe und Breite vom Bild ausgeben Bild1 := TBitmap.Create; try jpg := TJpegImage.Create; try Bild1.PixelFormat := pf24Bit; jpg.LoadFromFile(s); // Bild laden Pfad und DateiName übergeben Bild1.Assign(jpg); // JPG den Bitmap zuweisen Label11.Caption := 'Pixel: ' + Inttostr(Bild1.Width); Label10.Caption := 'Pixel: ' + Inttostr(Bild1.Height); finally Bild1.Free; end; finally jpg.free; end; Screen.Cursor := crDefault; end; procedure TForm1.StylesButton2Click(Sender: TObject); var s: String; i: Integer; begin for i := 0 to Listbox2.Items.Count -1 do begin if FileExists(ListBox2.Items.Strings[i]) then begin s := ListBox2.Items.Strings[i]; DeleteFile(s); end; // if end; // for Listbox2.Clear; end; procedure TForm1.StylesButton1Click(Sender: TObject); begin Listbox1.Clear; end; procedure TForm1.FormShow(Sender: TObject); begin FileSiceListBox1.Brush.Color := $0000FF80; DirectoryListBox1.Brush.Color := $0000FF80; ListBox1.Brush.Color := $0000FF80; ListBox2.Brush.Color := $0000FF80; end; end. //------------------------------------------------------------------------------------------------