Zurück zu JPG-Verkleinern.
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.
//------------------------------------------------------------------------------------------------