AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi JPG in Image = gespeichertem JPG

JPG in Image = gespeichertem JPG

Ein Thema von zeras · begonnen am 2. Apr 2017 · letzter Beitrag vom 23. Apr 2017
Antwort Antwort
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#1

JPG in Image = gespeichertem JPG

  Alt 2. Apr 2017, 13:13
Ich habe ein JPG und lade dies mit

Delphi-Quellcode:
     fName := AddBackSlash(fDirDst) + ExtractFileName(fNamePic);
      M.LoadFromFile(fName);
      M.Position := 0;
      I.LoadFromStream(M);
      ShowPage := TfShowPicture.Create(Application);
      ShowPage.Image1.Picture.Assign(I);
      ShowPage.Show;
in ein TImage.
Mittels

Delphi-Quellcode:
var
  Jpg: TJPEGImage;

begin
  If (Not Assigned(Image1.Picture.Graphic)) or Image1.Picture.Graphic.Empty Then
    MessageDlg('Kein Bild im Speicher', mtWarning, [mbOK], 0)
  else begin
    if SaveDialog1.Execute then
    Begin
      Jpg := TJPEGImage.Create;
      try
        Jpg.CompressionQuality := Compressionfactor;
        Jpg.ProgressiveEncoding := true;
        Jpg.PixelFormat := jf8Bit;
        Jpg.Assign(Image1.Picture.Graphic);
        Jpg.Compress;
        Jpg.SaveToFile(ChangeFileExt(SaveDialog1.FileName, '.jpg'));
      finally
        Jpg.Free;
      end;
    end;
  end;
end;
kann sich der User dieses Bild wieder speichern.

Wie kann ich sicherstellen, dass das im Image geladene Bild gleich dem zu sichernden Bild ist?
Die originale JPG Datei sollte gleich der gespeicherten JPG Datei sein.
Kann man das sicherstellen, ausser den Stream beim Laden mit im Speicher zu halten?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.449 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: JPG in Image = gespeichertem JPG

  Alt 2. Apr 2017, 14:13
Ich habe ein JPG und lade dies [...]

in ein TImage. [...] kann sich der User dieses Bild wieder speichern.

Wie kann ich sicherstellen, dass das im Image geladene Bild gleich dem zu sichernden Bild ist?
Die originale JPG Datei sollte gleich der gespeicherten JPG Datei sein.
Das dürfte in der Regel nicht der Fall sein. Wenn man ein JPEG lädt und anschließend wieder neu JPEG kodiert, ergeben sich fast immer Unterschiede. Meist wird die Bildqualität nach erneutem Kodieren schlechter.
Thomas Mueller
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: JPG in Image = gespeichertem JPG

  Alt 2. Apr 2017, 14:27
Es könnte mit etwas Glück allenfalls gelingen, wenn Du beim Speichern jegliche Komprimierung vermeidest und eine verlustfreie Speicherform wählst.

Die Wahrscheinlichkeit einer binären Übereinstimmung dürfte aber gegen 0 tendieren.

JPEG - Wikipedia
  Mit Zitat antworten Zitat
Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
703 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: JPG in Image = gespeichertem JPG

  Alt 23. Apr 2017, 14:29
Hallo zeras

wozu speicherst du das JPG Bild ab, wenn es danach 1:1 dem geladenen Bild entsprechen soll? Wenn der User das Bild ja nicht verändert, dann muss er es am Ende auch nicht abspeichern.

Falls du den User das Bild an einem anderen Ort speichern lassen willst, dann verwende CopyFile(alterOrt, neuerOrt, ...), dann ist es 1:1 .

Und wenn du Bilder leicht verändern [zum Beispiel Text ins Bild schreiben willst o.ä.] und dann so abspeichern willst, dass Quelle und Ziel wo nix geändert wurde 1:1 übereinstimmen, dann verwende ein Format, welches die Pixel RAW lädt und speichert oder eine verlustfreie Kompression wie PNG.

https://de.wikipedia.org/wiki/Portable_Network_Graphics
Michael Gasser
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:29 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