Autor Beitrag
crauhut
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 10.09.08 11:54 
Hallo,

ist es irgendwie möglich ein JPG so umzuwandeln ?

Hoffe ihr habt da ein paar Tips,

Danke,
crauhut
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 10.09.08 12:00 
Hallo!

Ein JPEG hat weder CMYK noch RGB als Farbraum ;-)
de.wikipedia.org/wik...EG#Farbraumumrechung

Grüße
Christian

//edit: Ach ja, :welcome: im Forum!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 10.09.08 12:55 
@Christian: Da muss ich sowohl dir als auch Wikipedia widersprechen. JPEG macht keinerlei Angaben darüber welchem Farbraum die einzelnen Planes angehören - das kann YCbCr, aber auch RGB oder sogar CMYK sein. Adobe nutzt zur Signalisierung des CYMK-Farbraums spezielle Marker - ohne solche Marker kann man allerdings nicht zuverlässig unterscheiden, um welchen Farbraum es sich handelt.

AXMD
crauhut Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 10.09.08 20:07 
Dann mal genauer zu meinem Problem:

Hab mit Adobe Photoshop Fotos mit CMYK als JPG abgespeichert und will diese JPGs auf einer Website anzeigen. Das funktioniert nur wenn ich sie als RGB abspeichere.

Diese Änderung möchte ich jetzt gerne mit meinem Programm durchführen

mfg,
crauhut
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 10.09.08 20:37 
Warum speicherst du die Dateien nicht direkt als RGB aus Photoshop heraus? Soweit ich weiß kann man das einstellen. Wenn du das bereits gespeicherte neu speicherst verlierst du zwangsweise Qualität.

AXMD
crauhut Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 10.09.08 20:48 
toller hinweis, ist mir schon klar das das so geht :)

Hintergrund ist folgender: im Internet soll unsere Produktdatenbank aktualisiert werden. Dazu werden mehrere tausend Bilder benutzt und abgeglichen. Und wenn es jetzt neue Bilder gibt, die als Ausgangsfarbraum (aufgrund des CMYK Fabraums für Druckdaten) CMYK haben, wir oft vergessen, beim JPG speichern RGB zu wählen. Und nun möchte ich, bevor ich eine neue Datei blind hochladen (und diese nicht angezeigt werden kann), auf CMYK überprüfen und ggfs. umwandeln.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 10.09.08 20:54 
Soweit ich weiß speichert Adobe die Information in APP14-Markern. Die libjpeg kann die beispielsweise auswerten. Entweder du parst das händisch oder du schaust dir mal den Code der Library an. Vielleicht hilft dir das weiter. Das selbst zu machen ist allerdings nicht ganz trivial.

AXMD
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 10.09.08 21:17 
Also, die WinForms-Klassen bekommen das anscheinend nicht hin. Es ist mir aber in WPF gelungen, das bietet ja auch viele neue Nicht-GUI-Klassen :-)

ausblenden Oxygene-Quelltext:
1:
2:
3:
4:
5:
6:
7:
8:
    var src := new BitmapImage(new Uri(cmykFilename, UriKind.Absolute));

    var enc := new JpegBitmapEncoder();
    var bf := BitmapFrame.Create(src);

    enc.Frames.Add(bf);
    using f := File.Create(rgbFilename) do
      enc.Save(f);


Ist zwar Oxygene, aber in C# geht's bis auf kleine Syntax-Unterschiede genauso.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
crauhut Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 11.09.08 09:16 
Also die Umwandlung hab ich jetzt so realisiert:

Zitat:
Bitmap src = new Bitmap("D:\\test.jpg");
src.Save("D:\\test2.bmp",ImageFormat.Bmp);
Bitmap dest = new Bitmap("D:\\test2.bmp");
dest.Save("D:\\test2.jpg", ImageFormat.Jpeg);

nicht besonders elegant, aber hauptsache es funktioniert :)

Aber wie bekomme ich jetzt die Abfrage auf cmyk hin ? Hab leider nur net 2.0 zur verfügung

mfg,
crauhut
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 11.09.08 09:18 
user profile iconcrauhut hat folgendes geschrieben:
Aber wie bekomme ich jetzt die Abfrage auf cmyk hin ?


Die Sache mit den Markern habe ich oben beschrieben. Für Details wie gesagt die libjpeg oder den JPEG-Standard konsultieren. .NET-seitig gibt es meines Wissens nach keine Möglichkeit, das abzufragen.

AXMD