Autor Beitrag
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 30.03.10 18:19 
Moin!

user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
Mit Canvas greife ich doch aber auf den Bildspeicher zu, nicht auf die Dateidaten.
Schonmal versucht, auf das Canvas eines TJPEGImages zuzugreifen? ;) Selbiges befindet sich im Picture-Container eines TImage, wenn du dort ein JPG-Bild geladen hast. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 31.03.10 09:52 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Solange du als PixelFormat min. pf24Bit verwendest, ja. ;)


Hi

An welcher Stelle müsste ich das PixelFormat angeben? Hier mal mein Quelltext: Ich rufe zuerst eine Prozedur auf, die mir mein jpg-Bild in bmp konvertiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure JPEGtoBMP(const FileName: TFileName);
var
  jpeg: TJPEGImage;
  bmp:  TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100{Default Value}
    jpeg.LoadFromFile(filename);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      bmp.SaveTofile(ChangeFileExt(FileName, '.bmp'));
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;


diese Prozedur rufe ich wie folgt auf:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
...
JPEGtoBMP('s.jpg');
image1.Picture.Bitmap.PixelFormat := pf24bit;
image1.Picture.LoadFromFile('s.bmp');
...


Muss ich nun das image1.Picture.Bitmap.PixelFormat := pf24bit; bereits vor der Konvertierung (jpg -> bmp) aufrufen, oder passt das so, wie oben zu sehen?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 31.03.10 11:19 
Moin!

user profile iconbensch hat folgendes geschrieben Zum zitierten Posting springen:
An welcher Stelle müsste ich das PixelFormat angeben?
Bei dem Code eigentlich gar nicht. ;)

user profile iconbensch hat folgendes geschrieben Zum zitierten Posting springen:
Ich rufe zuerst eine Prozedur auf, die mir mein jpg-Bild in bmp konvertiert:
Du musst das übrigens nicht erst in eine Datei schreiben, du kannst das auch direkt im Speicher machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure LoadJPEGasBMP(const FileName: TFileName);
  var
    jpeg: TJPEGImage;
    bmp:  TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.LoadFromFile(FileName);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      Image1.Picture.Bitmap.Assign(bmp);
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;

user profile iconbensch hat folgendes geschrieben Zum zitierten Posting springen:
Muss ich nun das image1.Picture.Bitmap.PixelFormat := pf24bit; bereits vor der Konvertierung (jpg -> bmp) aufrufen, oder passt das so, wie oben zu sehen?
Vorher nutzt das gar nix (genau so, wie die .Compression-Eigenschaft zu setzen, das wird beim Laden sowieso überschrieben) und nachher willst du´s eigentlich nicht, deshalb einfach nix machen, dann passt das (das BMP wird dann auf eine passende Farbtiefe gesetzt, so dass es verlustfrei übernommen werden kann).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 31.03.10 14:30 
Hi Narses, vielen Dank für deine Hilfe.

Ich habe da aber noch eine Frage: Gibt es neben dem RGB-Farbvergleich noch eine Möglichkeit, 2 Bilder zu vergleichen?

Denn ich habe hier ein unkomprimiertes jpg-Bild und das selbe in komprimierter Form. Der direkte Pixel-Vergleich ergibt 100% Übereinstimmung, aber wenn ich die beiden Bilder übereinander lege und miteinander vergleiche, ist ein Bild immer etwas heller als das andere. Wie kann man sich das erklären?

Ich habe die Bilder mit der Standard-Windows-Bildbetrachtung geöffnet und immer hin und her gewechselt (die Bilder wurden also immer auf der selben Bildschirmposition angezeigt, damit kann man einen ungleichmäßig beleuchteten Bildschirm als "Fehlerquelle" schon mal ausschließen...)

Die Bilder habe ich auf 4 Bildschirmen verglichen. Auf 2 Bildschirmen unterschied sich die Helligkeit der beiden Bilder, auf den anderen beiden Bildschirmen sah das Original-Bild genau so aus wie das komprimierte.

Die beiden Bilder habe ich mal hochgeladen:
Original: original Komprimiert: komprimiert

Wie gesagt, der direkte Pixel-Vergleich ergab über mein Delphi-Programm als auch im Photoshop-Vergleich 100% Übereinstimmung, trotzdem sah man einen Helligkeitsunterschied / Farbunterschied auf einigen Bildschirmen...

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 31.03.10 14:45 
Moin!

user profile iconbensch hat folgendes geschrieben Zum zitierten Posting springen:
der direkte Pixel-Vergleich ergab über mein Delphi-Programm als auch im Photoshop-Vergleich 100% Übereinstimmung, trotzdem sah man einen Helligkeitsunterschied / Farbunterschied auf einigen Bildschirmen...
Wenn die Pixel identisch sind, kann das nur "Einbildung" sein... :? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mi 31.03.10 16:35 
Diese Einbildung sprang dann aber auf mehrere Personen über, denn den Helligkeitsunterschied haben mehrere bestätigt. Gut, ich muss dazu sagen, dass der Farb- / Helligkeitsunterschied bisher nur auf einem Mac aufgetreten ist. Vielleicht liegt es auch daran?

*Mac niedermach*
JonS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 43

XP, Vista, Seven, Ubuntu
Delphi for Win32, Delphi Prism, C#, Java, PHP, VB
BeitragVerfasst: Mi 31.03.10 17:17 
Kann es sein, dass der Mac da einen Effekt hat, der einen leichten Gradient über den Bildschirm legt?
Das Gefühl hatte ich bei Windows-7 auch schon mehrere Male, dass die selbe Farbe an verschiedenen Stellen am Bildschirm (Höhe, nicht Breite) einen leichten Unterschied in der Helligkeit aufzeigte.

wfg Jon S.
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mi 31.03.10 17:20 
Bei mir schaun beide gleich aus...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 31.03.10 19:38 
Das rechte Bild wirkt auf mich auch etwas heller. Aber sie scheinen gleich zu sein. Vermutlich eine optische Täuschung.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 31.03.10 20:23 
Ich tippe jetzt einfach mal drauf, dass das JPEG ein Farbprofil mitbringt/verlangt.
Einfache Bitmaps kennen sowas nicht...

Übrigens ist hier kein solcher Effekt. Wenn ich müsste, würde ich eher das rechte dunkler schätzen, aber das kann auch am Bildschirm liegen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."