Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Farbraum bzw Farbmodell eines Bildes herausfinden bzw ändern

Frage Entwicklung Visual Studio

Mitglied: ahstax

ahstax (Level 2) - Jetzt verbinden

30.04.2014, aktualisiert 14:30 Uhr, 3175 Aufrufe, 7 Kommentare, 4 Danke

Hallo,

ich bin dabei ein Programm zu schreiben, mit dem Bilddateien (jpg, bmp, tif, png) "analysiert" und ggf konvertiert werden sollen.
Die Analyse soll unter anderem den Farbraum/das Farbmodell (RGB, CMYK, YCbCr, ggf weitere) umfassen, der/das bei dem Bild angewendet ist.

Mit
01.
strPixelFormat = imgBild.PixelFormat
erhalte ich zwar einen Wert (bsp "Format24bppRgb {137224}"), der ist aber interessanterweise(?) bei Bildern aus dem Farbraum RGB und YCbCr gleich.

Kann mir bitte jemand sagen, wie ich zuverlässig und eindeutig den verwendeten Farbraum eines Bildes herausfinde?

Neugierige Grüße,
Andreas
Mitglied: ahstax
30.04.2014 um 12:39 Uhr
Gar nicht schlecht, vielen Dank!!! :D
Bitte warten ..
Mitglied: colinardo
30.04.2014, aktualisiert um 12:45 Uhr
Falls du es in VB.Net benötigst:

01.
Imports System.Drawing.Imaging 
02.
 
03.
    Public Enum ImageColorFormat 
04.
        Rgb 
05.
        Cmyk 
06.
        Indexed 
07.
        Grayscale 
08.
    End Enum 
09.
 
10.
    Function GetImageColorFormat(bm As Bitmap) As ImageColorFormat 
11.
        Const pixelFormat32bppCMYK As Integer = &H200F 
12.
        Dim flags As ImageFlags = bm.Flags 
13.
 
14.
        If flags.HasFlag(ImageFlags.ColorSpaceCmyk) Or flags.HasFlag(ImageFlags.ColorSpaceYcck) Then 
15.
            Return ImageColorFormat.Cmyk 
16.
        ElseIf flags.HasFlag(ImageFlags.ColorSpaceGray) Then 
17.
            Return ImageColorFormat.Grayscale 
18.
        End If 
19.
 
20.
        Select Case bm.PixelFormat 
21.
            Case pixelFormat32bppCMYK 
22.
                Return ImageColorFormat.Cmyk 
23.
            Case PixelFormat.Format16bppGrayScale 
24.
                Return ImageColorFormat.Grayscale 
25.
            Case PixelFormat.Indexed 
26.
                Return ImageColorFormat.Indexed 
27.
        End Select 
28.
 
29.
        'default is rgb 
30.
        Return ImageColorFormat.Rgb 
31.
    End Function
Grüße Uwe
Bitte warten ..
Mitglied: ahstax
30.04.2014, aktualisiert um 13:34 Uhr
Hallo Uwe,
hallo miteinander,

vielen Dank für Deine Übersetzung. Ich hatte ein sehr ähnliches Ergebnis hier erhalten.

Woran könnte es denn liegen, dass der Farbraum YcbcrK (Ycck) als CMYK und der Farbraum Ycbcr als RGB (trotz der Anpassungen, s.u.) erkennt wird?

01.
 Public Enum ImageColorFormat 
02.
        Rgb 
03.
        Cmyk 
04.
        YccK 
05.
        Ycbcr 
06.
        Indexed 
07.
        Grayscale 
08.
    End Enum 
09.
 
10.
 
11.
    Public Function GetColorFormat(ByVal BM As Bitmap) As ImageColorFormat 
12.
        Const pixelFormatIndexed As Integer = 65536 
13.
        Const pixelFormat32bppCMYK As Integer = 8207 
14.
        Const pixelFormat16bppGrayScale As Integer = (4 Or (16 + 8)) 
15.
        ' Check image flags 
16.
        Dim flags = CType(BM.Flags, ImageFlags) 
17.
        If flags.HasFlag(ImageFlags.ColorSpaceCmyk) Then 
18.
            Return ImageColorFormat.Cmyk 
19.
        ElseIf flags.HasFlag(ImageFlags.ColorSpaceYcck) Then 
20.
            Return ImageColorFormat.YccK 
21.
        ElseIf flags.HasFlag(ImageFlags.ColorSpaceYcbcr) Then 
22.
            Return ImageColorFormat.Ycbcr 
23.
        ElseIf flags.HasFlag(ImageFlags.ColorSpaceGray) Then 
24.
            Return ImageColorFormat.Grayscale 
25.
        End If 
26.
        ' Check pixel format 
27.
        Dim pixelFormat = CType(BM.PixelFormat, Integer) 
28.
        If (pixelFormat = pixelFormat32bppCMYK) Then 
29.
            Return ImageColorFormat.Cmyk 
30.
        ElseIf ((pixelFormat And pixelFormatIndexed) <> 0) Then 
31.
            Return ImageColorFormat.Indexed 
32.
        ElseIf (pixelFormat = pixelFormat16bppGrayScale) Then 
33.
            Return ImageColorFormat.Grayscale 
34.
        End If 
35.
        ' Default to RGB 
36.
        Return ImageColorFormat.Rgb 
37.
    End Function
Bitte warten ..
Mitglied: colinardo
30.04.2014, aktualisiert um 14:32 Uhr
ohne dein Bild jetzt hier zu haben mit dem du testest, kommentiere mal Zeile 36 aus, dann kannst du prüfen ob überhaupt eine der Bedingung für dein Bild zutrifft...sollte dann nichts zurückgeben bzw. eine Exception auswerfen.
Bitte warten ..
Mitglied: ahstax
30.04.2014 um 14:42 Uhr
Wenn ich das Ycbcr-Bild im Debug mit Einzelschritten durchlaufen lasse, ist in "flags" der Wert
"ImageFlags.ColorSpaceRgb Or ImageFlags.HasRealDpi Or ImageFlags.HasRealPixelSize Or ImageFlags.ReadOnly"
und beim pixelFormat
"137224" (=RGB)

Beim YcbcrK-Bild den Wert
"ImageFlags.ColorSpaceRgb Or ImageFlags.HasRealPixelSize Or ImageFlags.ReadOnly"
und beim pixelFormat
"8207" (=CMYK)

Die auskommentierte Zeile 36 bringt keinen Fehler bzw den Wert "0"
Aufgerufen wird die Funktion bei mir mit
01.
Dim imgBild As Image 
02.
 fsOriginalBild = IO.File.OpenRead(PfadBildDatei) 
03.
 imgBild = Image.FromStream(fsOriginalBild) 
04.
 MsgBox(GetColorFormat(imgBild))
Die fraglichen Bilddateien habe ich mit dem FastStone Imageviewer erstellt. Darin wird mir auch angezeigt, was ich eingestellt hatte. Kann ich irgendwie prüfen, ob die Einstellungen von FastStone tatsächlich den gewünschten entsprechen?
Bitte warten ..
Mitglied: colinardo
30.04.2014, aktualisiert um 14:48 Uhr
mach mal aus Zeile 04:
MsgBox(GetColorFormat(imgBild).toString())
dann wird dir das Format anstatt als Integer des Enums als String angezeigt.

Kann ich irgendwie prüfen, ob die Einstellungen von FastStone tatsächlich den gewünschten entsprechen?
Noch einen anderen Image-Viewer zur Kontrolle benutzen (z.B. Irfanview).
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Outlook 2013 - Standardpfad zum speichern von eingebetteten Bildern ändern
Frage von TiTuxOutlook & Mail2 Kommentare

Hallo, wir nutzen Outlook 2013 und einige Mitarbeiter erhalten viele E-Mails, in denen ein Bild nicht im Anhang, sondern ...

Festplatten, SSD, Raid
Betriebssystem herausfinden
Frage von UliSchlesingerFestplatten, SSD, Raid10 Kommentare

Hallo, ich habe eine Festplatte mit Betriebssystem bekommen. Keiner weiß welches BS drauf ist. Wenn ich die HDD in ...

Suse
MySQL - mysqladmin-Pfad herausfinden?
gelöst Frage von McLionSuse2 Kommentare

Hallo, ich möchte den Pfad für mysqladmin gerausfinden, wie geht das? Mit "find / -name mysqladmin -type f" finde ...

Server-Hardware
Netzteil Watt Power herausfinden
gelöst Frage von M.MarzServer-Hardware6 Kommentare

Hallo zusammen, um demnächst die passende USV bestellen zu können, müssen wir wissen wie stark die Netzteile von unseren ...

Neue Wissensbeiträge
Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 17 MinutenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless10 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...