RGB to CMYK et inversement

Signaler
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
-
Bonsoir à tous,

Je reviens vers vous, concernant toujours cette fameuse conversion....BMP to TIF


Le technicien du boulot, cherche maitenant à convertir le format standard de microsoft .bmp en RGB 24bits au format non standard CMYK 32 bits....ou l'inverse je ne sais plus très bien, il ma tellement donner des info techniques que je me suis perdu dans son language...


Auriez-vous une orientation à ce sujet ?

Pour connaître le début de la conversation voir ici

J'ai posté ce message, car j'ai supposé que tout les participants de l'ancien post avais enlevé leur alerte mail (ce qui est normal, puisque j'ai valider les réponses concernat ma première question)


A+
Exploreur


 

16 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
25
Bonjour Exploreur,

Quoi qu'on pourra t'en dire ici et là ...

Tu n'obtiendras jamais une correspondance exacte de RGB (utilisé pour un affichage à l'écran et Basé sur une combinaison de Rouge, de vert et de Bleu) et CYMK (utilisé principalement pour les imprimantes et basé sur une combinaison des couleurs primaires)

Voilà un exemble : à gauche : RGB  ===>> à droite : transposé en CYMK
Celà tient principalement au fait que le G (vert) de RGB est lui-même composé de M (magenta bleu primaire) et de Y (Yellow jaune primaire)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
fait une recherche sur le forum, le sujet de la conversion RGB->CMJK est déjà passé il y a quelques mois, à plusieurs reprise en plus.
jmfmarques avait d'ailleurs bien animer le débat sur ce point. Il en connait un rayon semble-t-il. Il a même poster une source sur le traitement d'image , peut-etre y trouveras-tu quelques infos.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
GRRRRR pas assez rapide

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Salut,
Il faut d'abord convertir le CMYK en CMY, ce qui est faisable vu la similitude avec le CMYK, puis ensuite le CMY en RGB, de 3 dimensions à 3 dimensions...

Alors, pour une couleur donnée tu as :
Dans l'espace CMYK ses composantes sont données par :
{C, M, Y, K}

Dans l'espace CMY tu obtiens
{C * (1 - K) + K, M * (1 - K) + K, Y * (1 - K) + K}
Appelons les {C', M', Y'}

Dans l'espace RGB, cette couleur sera donnée par
{1 - C', 1 - M', 1 - K'}
En remplacant ces constantes par leurs valeurs en CMYK, tu obtiens
{(1 - C)(1 - K), (1 - M)(1 - K), (1 - Y)(1 - K)}

Maintenant dans l'autre sens :Il suffit de faire l'opération inverse en posant que K Minimum(C', M', Y') avec la convention que si K 1, alors en CMYK la couleur est directement donnée par {0,0,0,1} (pour éviter la division par 0 dans la formule finale)
Tu obtiens :
{C', M', Y'} = {1 - R, 1 - G, 1 - B}
Et la couleur en CMYK est donnée par
{(C' - K) / (1 - K), (M' - K) / (1 - K), (Y' - K) / (1 - K), K}
<hr size="2" width="100%" />Julien.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
25
Bonjour, julien237,

C'est bien, mais le résultat final n'est jamais exact ! Il est juste le plus rapproché possible.
Essaye déjà avec le gris et tu vas comprendre !
Le gris réel (dit naturel... celui des peintre, quoi...) est obtenu par la combinaison de trois parties égales de C, de Y et de M
La combinaison de 3 parties égales de R, de G et de B te donnera un gris rapproché, mais pas le même gris.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Je suis tout à fait d'accord avec toi jmfmarques.
Et inversément si on considère du RGB(1,0,0), ca nous donne full magenta et yellow en CMYK qui n'est pas vraiment du rouge pur et idem pour bleu et vert...
C'est juste les formules que les imprimantes utilisent...

<hr width="100%" size="2" />Julien.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Bonjour à tous,

Merci à tous de vos réponses...

Jmfmarques >> Merci  pour toutes tes explications que je ne manquerai pas de communiquer au technicien.

Casy >> Je n'ai pas retrouvé le sujet de conversation dont tu parles, ou alors j'ai mal chercher avec les mauvais termes. Je suis entièrement d'accord avec toi que Jmfmarques en connait un rayon sur ce sujet au vu de toutes ses réponses donné sur des sujets identique sur le forum...

Julien237 >> Merci à toi aussi pour toutes ces informations.

Ce que je sais c'est qu'il est arrivé à convertir le Bmp to Tif, et que maintenant c'est un problème de "couleurs" du moins du format utilisé.

De toute façon je vous tiens au courant sur ce sujet ouvert, et reviendrai vers vous...

Merci à tous

A+
Exploreur

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Bonjour à tous,

Voilà, de nouveau de retour avec une explication sur ce que veut faire le technicien du boulot...

Dans un premier temps il arrive bien à convertir un fichier Bmp en fichier Tif au format RGB 24 bits....

Lui, ce qu'il souhaite, c'est convertir (si c'est possible) le fichier Tif au format RGB 24 bits au format CMYK 32 bits...

D'après vous, est-ce possible? Si oui, auriez-vous une orientation à lui proposer ?

Merci d'avance de votre réponse

A+
Exploreur

 
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
La formule que je t'ai mise plus haut ne convient pas ?

<hr width="100%" size="2" />Julien.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Le truc qu'il n'arrive pas a faire entre autre c'est de modicier l'entête du fichier une fois transformé...

A+
Exploreur

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Je vais lui dire d'ouvrir un compte su Vbfrance, car je sens que je suis mal barré pour expliquer ses explications...

A+
Exploreur

 
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Salut,
D'accord, je ne voyais pas cet angle du problème...
Je comprendrais tout à fait que tu préfère une dll ou une fonction toute faite, mais voila  la description officielle du format Tiff.
Bonne lecture

<hr width="100%" size="2" />
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Merci, je vais lui envoyer le liens pour qu'il fasse sa lecture...

Et Merci d'avoir garder l'alerte mail de ce message...

A+
Exploreur

 
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Encore une chose, je vois que tu es en VB6, mais en .Net, c'est fait très facilement !
Je viens de faire ceci en 10 minutes et ca à l'air de fonctionner...



Dim
codecs()

As
Imaging.ImageCodecInfo = Imaging.ImageCodecInfo.GetImageEncoders




Dim
tiffCodec

As
Imaging.ImageCodecInfo =

Nothing








For
i

As



Integer
= 0

To
codecs.Length - 1


If
codecs(i).FilenameExtension.Contains(

"TIF"
)

Then

tiffCodec = codecs(i)







End



If






Next






If
tiffCodec

Is



Nothing



Then

MsgBox(




"Impossible de trouver l'encodeur tiff."
)


Exit



Sub






End



If






Dim
encoderParams

As



New
Imaging.EncoderParameters(1)encoderParams.Param(0) =


New
Imaging.EncoderParameter(Imaging.Encoder.SaveFlag
, _Imaging.EncoderValue.ColorTypeCMYK)


Dim
bmp

As



New
Bitmap(70, 70, Imaging.PixelFormat.Format32bppArgb)


Dim
g

As
Graphics = Graphics.FromImage(bmp)g.FillRectangle(Brushes.BlueViolet,


New
Rectangle(10, 10, 50, 50))bmp.Save(


"Yop.tiff"
, tiffCodec, encoderParams)

Tu veux que je te fasse un dll qui te fait la conversion tout seul ?

<hr width="100%" size="2" />Julien.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Là je suis rentré chez moi...Demain matin je lui montrerai ce bout de code, et qu'il essaye de l'adpater en VB6..

Car en faite toute son appli de vision est faite en VB6...

A+
Exploreur

 
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Ouaip je comprends bien,
Mais à essayer de l'adapter il perdrait son temps, ce ne sont que des fonctions du framework, bref propre au .Net.

<hr width="100%" size="2" />Julien.