AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia JPEG erstellen und Skallieren
Thema durchsuchen
Ansicht
Themen-Optionen

JPEG erstellen und Skallieren

Ein Thema von zeina · begonnen am 1. Feb 2019 · letzter Beitrag vom 1. Feb 2019
Antwort Antwort
zeina

Registriert seit: 8. Jun 2018
56 Beiträge
 
#1

JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 09:50
Hallo ,
Ich bin neue Delphi Programmiererin.
Kann jemanden bitte mir helfen??

Ich möchte ein Bild für Form erstellen, es speichern und anzeigen.

Wenn Sie die Anzeige vergrößern, behält das Bild seine Genauigkeit und Größe für die neue Größe bei Form.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#2

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 09:55
Hallo Zeina,

ich gehe davon aus du lässt das Bild in einem TImage darstellen?
Wie vergrößerst du die Anzeige (ganzes Form oder nur TImage)?
Hast du beim TImage "Stretch" auf True (ggf. Proportional auch auf "True" um Verzerrungen zu vermeiden)?
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 10:00
Hallo zeina,

Wir können dir hier helfen, aber es sieht aus als hättest du deine Frage mit Google-Translate übersetzt.
Falls dir Englisch besser liegt als Deutsch kannst du es vllt. mal in der englischsprachigen Delphi-Praxis probieren: https://en.delphipraxis.net

We can help you here, but it seems like you translated your question with google translate.
If you're better at writing english than german you may want to try the english speaking Delphi-Praxis at https://en.delphipraxis.net
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
zeina

Registriert seit: 8. Jun 2018
56 Beiträge
 
#4

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 10:04
Wenn ich es mit Stretch einstellen ,denn die Qualität nicht schön aussieht

Code:
procedure TForm1.SaveJPEG;
begin
  bmp := TBitmap.Create;
  try
    bmp.Assign(Form1.GetFormImage);
    StringGrid1.Visible := False;
    jpg := TJpegImage.Create;
    try
      jpg.Assign(bmp);
      jpg.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Foto.jpg');
    finally
      jpg.Free;
    end;
  finally
    bmp.Free;
  end;
end;

procedure TForm1.verkleinen;
begin
  jpg := TJpegImage.Create;
  try
    jpg.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Foto.jpg');
    if jpg.Height > jpg.Width THEN
      scale := min(Round(Screen.Height / jpg.Height),
        Round(Form1.Height / jpg.Height)) // org 50
    else
      scale := min(Round(Screen.Width / jpg.Width),
        Round(Screen.Width / jpg.Width)); // org 50
    bmp := TBitmap.Create;
    try
      bmp.Width := Trunc(jpg.Width / scale);
      bmp.Height := Trunc(jpg.Height / scale);
      bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);
      // Self.Canvas.Draw(0,0, bmp);
      jpg.Assign(bmp);
      jpg.CompressionQuality := 100;
      jpg.Compress;
      Image1.Picture.Graphic := jpg;
    finally
      bmp.Free;
    end;
  finally
    jpg.Free;
  end;
end;

procedure TForm1.vergrößen;
begin
  jpg := TJpegImage.Create;
  try
    jpg.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Foto.jpg');
    if jpg.Height > jpg.Width then
      scale := max(Round(jpg.Height / Screen.Height),
        Round(jpg.Height / Form1.Height)) // org 50
    else
      scale := max(Round(jpg.Width / Screen.Width),
        Round(jpg.Width / Form1.Width));
    bmp := TBitmap.Create;
    try
      bmp.Width := Round(jpg.Width / scale);
      bmp.Height := Round(jpg.Height / scale);
      bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);
      Self.Canvas.Draw(0, 0, bmp);
      jpg.Assign(bmp);
      jpg.CompressionQuality := 100;
      jpg.Compress;
      Image1.Picture.Graphic := jpg;
    finally
      bmp.Free;
    end;
  finally
    jpg.Free;
  end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 if assigned (Form1) then begin
  if Form1.WindowState = wsMaximized then  begin
   vergrößen;
   end
  else if Form1.WindowState = wsNormal then
   begin
   verkleinen;
   end;
 end;
end;
  Mit Zitat antworten Zitat
1. Feb 2019, 10:10
Dieses Thema wurde am "01. Feb 2019, 11:10 Uhr" von "Luckie" aus dem Forum "Sonstige Fragen zu Delphi" in das Forum "Multimedia" verschoben.
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 10:31
Ähnliche Frage
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 10:35
Wenn es darum geht, ein Abbild eines Formulars zu erstellen:

JPG ist keine gute Wahl dafür, jedenfalls dann nicht, wenn die Qualität gut sein soll.
JPG komprimiert das Bild und ist dabei nicht verlustfrei (Verlust von Bildinformation). Das gilt für Fotos ebenso wie für für Delphiformulare. Bei Formularen fällt es wegen der Bildstruktur allerdings viel mehr auf.

Man möchte ein Formular als PNG speichern! (nicht als JPG!)
Wenn es JPG sein soll(muss), dann in möglichst geringer Kompresseion, was glaub ich als "Qualtität" anzugeben ist. Z.B. 85 % oder mehr. Damit steigt natürlich die Größe der Datei.

Möglicherweise kommen in Deinem Fall auch Effekte zum tragen, die etwas mit der Bildskaliereung auf Deinem Rechner zu tun haben.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#8

AW: JPEG erstellen und Skallieren

  Alt 1. Feb 2019, 11:04
Also bei mir haben werden die Bilder immer so gut angezeigt, wie sie ihrer Ursprungsqualität entsprechen. Bedeutet wenn man natürlich ein16*16px Bild auf 600*600 vergrößert wird die Qualität entsprechend schlecht usw.

Aber warum so Kompliziert?

Du könntest dein Bild auch in ein TImage legen:
width/Heigth entsprechend der sichtbaren Fläche deines Form
Scale = True (Skalierung)
Proportional = True (gegen Verzerrung)
center = True (Zentrierung)
Alignwithmargins = True (damit wird das Bild beim Anpassen der Fenstergröße auch angepasst, wenn Anchors gesetzt sind)
Anchors = akLeft, akTop, akRight, akBottom
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz