सेपिया टोन बनाने के लिए आवश्यक बुनियादी संचालन क्या हैं? मेरा संदर्भ बिंदु perl imagemagick लाइब्रेरी है, इसलिए मैं आसानी से किसी भी मूल ऑपरेशन का उपयोग कर सकता हूं। मैंने मापने की कोशिश की है (इसे ग्रेस्केल बनाना), रंगीन करें, और फिर छवि को बढ़ाएं लेकिन यह अभी भी थोड़ा धुंधला है।एक सेपिया टोन कैसे बनाया गया है?
उत्तर
यदि आप imagemagic कमांड लाइन का उपयोग करते हैं तो यह आसान है।
http://www.imagemagick.org/script/convert.php
उपयोग "-sepia टोन सीमा" तर्क जब परिवर्तित।
अजीब पर्याप्त, PerlMagick एपीआई सीधे ऐसा करने के लिए एक विधि शामिल करने के लिए प्रतीत नहीं होता:
http://www.imagemagick.org/script/perl-magick.php
... और किसी भी भूरा विधि के लिए कोई संदर्भ।
AForge.NET लाइब्रेरी में इसे कैसे कार्यान्वित किया गया है, इस पर एक नज़र डालें, सी # कोड here है।
मूल बातें होने की
- YIQ रंग अंतरिक्ष के लिए यह बदलने लगते हैं
- इसे संशोधित
- आरजीबी
पूर्ण alrogithm स्रोत कोड में है, के साथ साथ वापस करने के लिए बदलना आरजीबी -> वाईआईक्यू और वाईआईक्यू -> आरजीबी परिवर्तनों को समझाया गया है। सी # में एक सेपिया कनवर्टर का
कोड लिंक के लिए अन्य रंगों का उपयोग करने का विकल्प भी दिखाई नहीं देता अब और काम नहीं करता है ... = ( –
क्या कोई लिंक अपडेट कर सकता है? – codejammer
@codejammer http://bit.ly/ZP0Y3x –
नमूना कोड मेरा उत्तर यहाँ में उपलब्ध है: What is wrong with this sepia tone conversion algorithm?
एल्गोरिथ्म आता this page से, प्रत्येक इनपुट पिक्सेल रंग निम्नलिखित तरीके से तब्दील हो जाता है:
outputRed = (inputRed * .393) + (inputGreen *.769) + (inputBlue * .189)
outputGreen = (inputRed * .349) + (inputGreen *.686) + (inputBlue * .168)
outputBlue = (inputRed * .272) + (inputGreen *.534) + (inputBlue * .131)
यदि इनमें से कोई भी आउटपुट मान 255 से अधिक है, तो आप इसे से 255 पर सेट करें। ये विशिष्ट मान सेपिया टोन के मान हैं जो माइक्रोसॉफ्ट द्वारा अनुशंसित हैं।
पर कॉल करना पड़ा आपको गणित का उपयोग करने की आवश्यकता होगी। मेरी संभावना है। मैंने उन तीन पंक्तियों के बाद 255 के लिए चेक करने का प्रयास किया और एक त्रुटि होगी। मैं आज भी उसी समस्या का सामना कर रहा था जब मैं अपने कार्यक्रम के लिए सेपिया टोन बनाने की कोशिश कर रहा था .. – BigBug
लेकिन अगर मैं चा के लिए कुछ अलग करना चाहता हूं तो क्या होगा फ़िल्टर को बंद करें तो मैं इन मानों को कैसे प्राप्त कर सकता हूं? मेरे प्रश्न की तरह यह है कि हमें इन मूल्यों के बारे में कैसे पता चला, क्या हमें बार-बार अलग-अलग मूल्यों को रखने की ज़रूरत है? – AHF
यह सी # में है, हालांकि, बुनियादी अवधारणाएं समान हैं। आप इसे पर्ल में परिवर्तित करने में सक्षम होंगे।
private void SepiaBitmap(Bitmap bmp)
{
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);
IntPtr ptr = bmpData.Scan0;
int numPixels = bmpData.Width * bmp.Height;
int numBytes = numPixels * 4;
byte[] rgbValues = new byte[numBytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, numBytes);
for (int i = 0; i < rgbValues.Length; i += 4)
{
rgbValues[i + 2] = (byte)Math.Min((.393 * red) + (.769 * green) + (.189 * (blue)), 255.0); //red
rgbValues[i + 1] = (byte)Math.Min((.349 * red) + (.686 * green) + (.168 * (blue)), 255.0); //green
rgbValues[i + 0] = (byte)Math.Min((.272 * red) + (.534 * green) + (.131 * (blue)), 255.0); //blue
if ((rgbValues[i + 2]) > 255)
{
rgbValues[i + 2] = 255;
}
if ((rgbValues[i + 1]) > 255)
{
rgbValues[i + 1] = 255;
}
if ((rgbValues[i + 0]) > 255)
{
rgbValues[i + 0] = 255;
}
}
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, numBytes);
this.Invalidate();
bmp.UnlockBits(bmpData);
}
गणित का उपयोग करने का क्या मतलब है।मिनट और यदि 255 का बड़ा है तो जांचने के लिए? – AndreaBogazzi
गणना के मानों को बाइट रेंज पर क्लैंप करने के लिए 'Math.Min' आवश्यक है। उन 'if' कथन जो पूरी तरह से व्यर्थ हैं। 'rgbValues' एक 'बाइट' सरणी है, इसलिए इसके किसी भी मान संभवतः> 255 हो सकता है – saucecontrol
- 1. एक एपीकंट्रोलर उदाहरण कब बनाया गया है?
- 2. यह सीएसएस मेनू कैसे बनाया गया है?
- 3. SQLiteOpenHelper - डेटाबेस कैसे बनाया गया है?
- 4. बनाया गया NSURL शून्य है
- 5. PostGreSQL बनाया गया गति?
- 6. ऑडियो प्रोसेसिंग - टोन रिकग्निशन
- 7. टोन जेनरेटर क्रैश एंड्रॉइड
- 8. तालिका में "बनाया गया" कॉलम कैसे जोड़ें
- 9. Uplink डीटीएमएफ टोन पीढ़ी
- 10. बनाया गया फ़ाइल कोई अभिभावक नहीं है?
- 11. सी ++ में वीटीबल कब बनाया गया है?
- 12. jQuery ईवेंट जब तत्व बनाया गया है
- 13. क्या PHP में ऑप्टिमाइज़र बनाया गया है?
- 14. $ _SESSION बनाया गया है लेकिन $ _SERVER ['HTTP_COOKIE']
- 15. Google.com को कैसे बनाया गया था?
- 16. कोडनाम एक गतिशील रूप से बनाया गया फॉर्म, कैसे "पीछे"
- 17. मेवेन संसाधन फ़ोल्डर नहीं बनाया गया है
- 18. वास्तव में एक ContentProvider कब बनाया गया है?
- 19. एक JSESSIONID किस स्थितियों के तहत बनाया गया है?
- 20. सी ++ में बनाया गया एक vtable कब है?
- 21. sqlite डेटाबेस नहीं बनाया गया
- 22. Django - आखिरी ऑब्जेक्ट बनाया गया, एक साथ फ़िल्टर
- 23. ऑनक्रेट ऑब्जेक्ट बनाया गया है जब क्रिएट कहा जाता है?
- 24. लार्वेल के साथ बनाया गया सरल अनुप्रयोग?
- 25. प्रोग्राम के बनाया गया कस्टम बटन
- 26. फ़ाइल कैसे बनाया गया, एक्सेस किया गया और संशोधित दिनांक विंडोज गुणों के समान ही है?
- 27. 'पर बनाया गया' और 'अपडेट किया गया' फ़ील्ड
- 28. CGImageRef से बनाया गया UIImage UIImagePNGRresentation
- 29. दोस्त को कब बनाया गया था?
- 30. इस ग्रहण दृश्य को कैसे बनाया गया था?
जब से मैं पर्ल में एक ImageMagick वस्तु है यह सबसे सीधा तरीका नहीं है बल्कि यह काम कर सकता था ... लेकिन यह प्रभाव – user83358