मैं ImageMagick उपयोग करना Photoshops रंग मिश्रण मोड को दोहराने की कोशिश कर रहा है में यह दोहराने कर सकते हैं। मैं एक online guide में निम्नलिखित सूत्र पाया, लेकिन मैं नहीं जानता कि वे क्या मतलब है। क्या मुझे बस कुछ चैनलों को स्वैप करने की ज़रूरत है?इस रंग सम्मिश्रण मोड सूत्र की व्याख्या करें तो मैं PHP/ImageMagick
उत्तर
एक अग्रभूमि पिक्सेल है, बी पृष्ठभूमि पिक्सेल, सी नई पिक्सेल है। एच प्रत्येक पिक्सेल के लिए ह्यू मूल्य है, एस संतृप्ति मूल्य है, एल Luminance मूल्य है, और वाई चमक मूल्य है। (सुनिश्चित नहीं है कि चमक और चमक के बीच अंतर क्या है।
वैसे भी, पहले उदाहरण में नए पिक्सेल (सी) के ह्यू (एच) और संतृप्ति (एस) मानों को अग्रभूमि पिक्सेल (ए) से कॉपी किया गया है। जबकि नए पिक्सेल की चमक (वाई) मूल्य पृष्ठभूमि (बी) पिक्सेल की चमक (एल) मूल्य से लिया जाता है।
विकिपीडिया मिश्रण मोड पर एक अच्छा लेख http://en.wikipedia.org/wiki/Blend_modes
वे के लिए फार्मूले देना है गुणा, स्क्रीन और मोड ओवरले।
Multiply
Formula: Result Color = (Top Color) * (Bottom Color) /255
Screen
Formula: Result Color = 255 - [((255 - Top Color)*(255 - Bottom Color))/255]
Overlay
Formula: Result Color = if (Bottom Color < 128)
then (2 * Top Color * Bottom Color/255)
else (255 - 2 * (255 - Top Color) * (255 - Bottom Color)/255)
धन्यवाद, इससे मुझे विकीपीडिया से सूत्रों की व्याख्या करने में बहुत मदद मिली (मैंने उन्हें पहले चेक आउट किया)। बस जोड़ने के लिए, इन सूत्रों को प्रत्येक रंग घटक (आरजीबी रंगों के लिए) के लिए अलग से चलाया जाना चाहिए। यह कम से कम शुरुआत में मेरे लिए स्पष्ट नहीं था। – Jouni
कुछ समय पहले मैं इंजीनियर उलट फ़ोटोशॉप सम्मिश्रण मोड।
http://www.kineticsystem.org/?q=node/13
और यहाँ कोड मैं करने के लिए और आरजीबी (लाल, हरा, नीला) से HSY (रंग, संतृप्तता, दीप्ति) के बीच परिवर्तित करने के लिए उपयोग करने के लिए नीचे दिए गए:
यहाँ एक नज़र डालें। फ़ोटोशॉप संतृप्ति की गणना करने के लिए हेक्साकोन्स नामक कुछ का उपयोग करें।
जियोवानी
/**
* This is the formula used by Photoshop to convert a color from
* RGB (Red, Green, Blue) to HSY (Hue, Saturation, Luminosity).
* The hue is calculated using the exacone approximation of the saturation
* cone.
* @param rgb The input color RGB normalized components.
* @param hsy The output color HSY normalized components.
*/
public static void rgbToHsy(double rgb[], double hsy[]) {
double r = Math.min(Math.max(rgb[0], 0d), 1d);
double g = Math.min(Math.max(rgb[1], 0d), 1d);
double b = Math.min(Math.max(rgb[2], 0d), 1d);
double h;
double s;
double y;
// For saturation equals to 0 any value of hue are valid.
// In this case we choose 0 as a default value.
if (r == g && g == b) { // Limit case.
s = 0d;
h = 0d;
} else if ((r >= g) && (g >= b)) { // Sector 0: 0° - 60°
s = r - b;
h = 60d * (g - b)/s;
} else if ((g > r) && (r >= b)) { // Sector 1: 60° - 120°
s = g - b;
h = 60d * (g - r)/s + 60d;
} else if ((g >= b) && (b > r)) { // Sector 2: 120° - 180°
s = g - r;
h = 60d * (b - r)/s + 120d;
} else if ((b > g) && (g > r)) { // Sector 3: 180° - 240°
s = b - r;
h = 60d * (b - g)/s + 180d;
} else if ((b > r) && (r >= g)) { // Sector 4: 240° - 300°
s = b - g;
h = 60d * (r - g)/s + 240d;
} else { // Sector 5: 300° - 360°
s = r - g;
h = 60d * (r - b)/s + 300d;
}
y = R * r + G * g + B * b;
// Approximations erros can cause values to exceed bounds.
hsy[0] = h % 360;
hsy[1] = Math.min(Math.max(s, 0d), 1d);
hsy[2] = Math.min(Math.max(y, 0d), 1d);
}
/**
* This is the formula used by Photoshop to convert a color from
* HSY (Hue, Saturation, Luminosity) to RGB (Red, Green, Blue).
* The hue is calculated using the exacone approximation of the saturation
* cone.
* @param hsy The input color HSY normalized components.
* @param rgb The output color RGB normalized components.
*/
public static void hsyToRgb(double hsy[], double rgb[]) {
double h = hsy[0] % 360;
double s = Math.min(Math.max(hsy[1], 0d), 1d);
double y = Math.min(Math.max(hsy[2], 0d), 1d);
double r;
double g;
double b;
double k; // Intermediate variable.
if (h >= 0d && h < 60d) { // Sector 0: 0° - 60°
k = s * h/60d;
b = y - R * s - G * k;
r = b + s;
g = b + k;
} else if (h >= 60d && h < 120d) { // Sector 1: 60° - 120°
k = s * (h - 60d)/60d;
g = y + B * s + R * k;
b = g - s;
r = g - k;
} else if (h >= 120d && h < 180d) { // Sector 2: 120° - 180°
k = s * (h - 120d)/60d;
r = y - G * s - B * k;
g = r + s;
b = r + k;
} else if (h >= 180d && h < 240d) { // Sector 3: 180° - 240°
k = s * (h - 180d)/60d;
b = y + R * s + G * k;
r = b - s;
g = b - k;
} else if (h >= 240d && h < 300d) { // Sector 4: 240° - 300°
k = s * (h - 240d)/60d;
g = y - B * s - R * k;
b = g + s;
r = g + k;
} else { // Sector 5: 300° - 360°
k = s * (h - 300d)/60d;
r = y + G * s + B * k;
g = r - s;
b = r - k;
}
// Approximations erros can cause values to exceed bounds.
rgb[0] = Math.min(Math.max(r, 0d), 1d);
rgb[1] = Math.min(Math.max(g, 0d), 1d);
rgb[2] = Math.min(Math.max(b, 0d), 1d);
}
धन्यवाद, जियोवानी! आप केवल आर, जी, बी चर के परिभाषा को भूलना भूल गए हैं। क्या वे आर = 0.3, जी = 0.5 9, बी = 0.11 होना चाहिए? मैंने यहां उन मानों को पाया: [http://dev.w3.org/fxtf/compositing-1/#blendingnonseparable ](http://dev.w3।संगठन/fxtf/compositing-1/# blendingnonseparable) –
यह कोड ठीक काम करता है लेकिन आपको आरजीबी मानों को स्केल करना होगा उदा। आरजीबी [0] = रंग .RED.getRec()/255 डी; आरजीबी [1] = रंग .RED.getGreen()/255 डी; आरजीबी [2] = रंग .RED.getBlue()/255 डी; और इसके परिणामस्वरूप इसके विपरीत। – Chris
ये रंग सम्मिश्रण सूत्रों काफी मुश्किल है, तो आप भी अल्फ़ा चैनल को शामिल करने की जरूरत है। मैं फ़ोटोशॉप का सम्मिश्रण प्रजनन करने में सक्षम नहीं था, लेकिन Gimp इस तरह काम करता है:
Color mix_hsv(
ColorMixMode::Enum mode, // blending mode
Color cd, // destination color (bottom pixel)
Color cs) // source color (top pixel)
{
// Modify the source color
float dh, ds, dv; // destination hsv
float sh, ss, sv; // source hsv
cd.GetHsv(dh, ds, dv);
cs.GetHsv(sh, ss, sv);
switch (mode) {
case HUE: cs.InitFromHsv(sh, ds, dv); break;
case SATURATION: cs.InitFromHsv(dh, ss, dv); break;
case COLOR: cs.InitFromHsv(sh, ss, dv); break;
case LUMINOSITY: cs.InitFromHsv(dh, ds, sv); break;
}
cs.A = std::min(cd.A, cs.A);
// Blend the modified source color onto the destination color
unsigned char cd_A_orig = cd.A;
cd = mix(NORMAL, cd, cs); // normal blending
cd.A = cd_A_orig;
return cd;
}
आप premultiplied अल्फा का उपयोग करते हैं, मत भूलना सही ढंग से उपरोक्त कोड में इसे संभाल करने के लिए। मैं Gimp के स्रोत कोड में मिश्रण के लिए कोड को खोजने के लिए सक्षम नहीं था, लेकिन इसके परिणाम स्वरूप छवियों बहुत समान हैं।
फ़ोटोशॉप के रंग सम्मिश्रण स्पष्ट रूप से अलग है, इसलिए किसी को भी इसे लागू करने के लिए एक तरह से यह पता लगता है, हम सभी को अवगत कराएं: ओ)
मिसो
- 1. सूत्र में व्याख्या लाइन डंप
- 2. अल्फा सम्मिश्रण सी में 2 RGBA रंग
- 3. इस जावा कोड की व्याख्या क्या है?
- 4. इस पायथन कोड स्निपेट की मेरी व्याख्या सत्यापित करें
- 5. यूनिट परीक्षण की व्याख्या करें
- 6. math.random() की व्याख्या की
- 7. iostat की व्याख्या कैसे करें?
- 8. csv.Error: इटरेटर सूत्र चाहिए, नहीं तो बाइट्स
- 9. सी ++ की व्याख्या चलाने?
- 10. निर्धारित करें कि कोई सूत्र (मान) किसी भी सूत्र
- 11. व्याख्या की गई भाषाएं - दुभाषिया
- 12. पीएचपी कथन की व्याख्या
- 13. विंडोज टास्क मैनेजर की व्याख्या कैसे करें?
- 14. ग्लोथो() के उपयोग की व्याख्या करें?
- 15. संकलन मोड में एएनएसआई रंग
- 16. स्कैनरसेट क्षमताओं की व्याख्या
- 17. मैं इस तरह iswitchb- मोड क्यों शुरू करूं?
- 18. आंशिक आवेदन की व्याख्या -
- 19. एंड्रॉयड रंग ओवरले - PorterDuff मोड
- 20. ऑर्ग-मोड स्ट्राइक-थ्रू रंग
- 21. क्रिस्टल रिपोर्ट में सूत्र सूत्र के योग की गणना कैसे करें?
- 22. जब इटरेटर का उपयोग किया जाता है तो संग्रह के सिंक्रनाइज़ेशन की व्याख्या करें?
- 23. एक सूत्र
- 24. फिर से शुरू होने पर एंड्रॉइड क्रैश। इस अपवाद की व्याख्या कैसे करें?
- 25. विजुअल मोड की जांच करें
- 26. की व्याख्या पासवर्ड regex घटक
- 27. जीसीसी मानचित्र फ़ाइल की व्याख्या
- 28. कॉलग्रिंड डेटा की व्याख्या करना
- 29. /proc/bus/pci/devices की सामग्री की व्याख्या कैसे करें?
- 30. बाइटकोड बनाम। व्याख्या की गई
धन्यवाद इस मैं सिर्फ क्या जरूरत है। हालांकि फॉर्मूला इतना आसान नहीं है क्योंकि परिणाम थोड़ा सा धोया गया था। अंत में मैं इसे इस मदद से काम करने में कामयाब रहा: http://www.beneaththewaves.net/Photography/Secrets_of_Photoshops_Colour_Blend_Mode_Revealed_Sort_Of.html – Castles