दिलचस्प पोस्ट
निर्भरता उलटा सिद्धांत क्या है और यह महत्वपूर्ण क्यों है? Postgres में खोजशब्द-जैसी कॉलम नामों से बचें अपवाद प्राप्त करना java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions नए फ़ायरबसे को अपडेट करने के बाद पायथन के साथ विंडोज पर स्क्रीनशॉट प्राप्त करें? <! – > काम नहीं कर रहा है ld मौजूदा पुस्तकालय नहीं ढूँढ सकता File_get_contents का उपयोग कर छवि दिखाएं सी ++ में बिटमैप ऑब्जेक्ट के रूप में खिड़की का स्क्रीनशॉट कैसे प्राप्त करें? जावास्क्रिप्ट में छवियों को लोड करते समय आईपैड / आईफोन ब्राउजर दुर्घटनाग्रस्त Iframe को छुपाने पर एक यूट्यूब प्लेयर को कैसे रोकें? सीएसएस – रिश्तेदार पैरेंट डिविए पूर्ण बाल डिवी ऊंचाई तक नहीं खींच रहा है NSString मान को छँटाई जा रही है जैसे NSInteger NSSortDescriptor का उपयोग कर रहा है क्या आपको कभी भी 'जावास्क्रिप्ट:' को ऑनक्लिक में निर्दिष्ट करने की ज़रूरत है? MVCBuildViews सही ढंग से काम नहीं कर रहा है jQuery के धारावाहिक चेकबॉक्स को पंजीकृत नहीं करता है

आईओएस: एक UIImage के रंगों को बदलना

मैं एक iPhone आवेदन पर काम कर रहा हूँ

मेरे पास पीएनजी चित्र हैं जो प्रतीक का प्रतिनिधित्व करते हैं। प्रतीक एक पारदर्शी पृष्ठभूमि के साथ सभी काले हैं।

क्या कोई रास्ता है कि मैं एक और रंग में काला रंग बदल सकता हूँ? जो मैं देख रहा हूं वह कुछ ऐसा है जो मेरी इच्छित रंग चुनने में मदद कर सकता है और जब प्रतीकों का उपयोग कर रहा हो (एक UIImage में) मैं उन्हें अपनी पसंद का रंग दिखा सकता हूं

मैंने आस-पास खोज की है और ओपनसीवी नामक रूपरेखा पाया है जो छवियों को हेरफेर कर सकता है लेकिन मैं यह नहीं जान सकता कि तस्वीर को किस तरह से याद करना है

किसी भी मदद और सुझाव की काफी सराहना की है।

धन्यवाद

वेब के समाधान से एकत्रित समाधान "आईओएस: एक UIImage के रंगों को बदलना"

नमस्ते आप हटाना चाहते हैं / एक विशिष्ट रंग का मतलब नीचे श्रेणी का उपयोग करें ….

.h फ़ाइल:

#import <UIKit/UIKit.h> @interface UIImage (Color) + (UIImage*)setBackgroundImageByColor:(UIColor *)backgroundColor withFrame:(CGRect )rect; + (UIImage*) replaceColor:(UIColor*)color inImage:(UIImage*)image withTolerance:(float)tolerance; +(UIImage *)changeWhiteColorTransparent: (UIImage *)image; +(UIImage *)changeColorTo:(NSMutableArray*) array Transparent: (UIImage *)image; //resizing Stuff... + (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize; @end 

फ़ाइल एम

 #import <QuartzCore/QuartzCore.h> #import "UIImage+Color.h" @implementation UIImage (Color) + (UIImage* )setBackgroundImageByColor:(UIColor *)backgroundColor withFrame:(CGRect )rect{ // tcv - temporary colored view UIView *tcv = [[UIView alloc] initWithFrame:rect]; [tcv setBackgroundColor:backgroundColor]; // set up a graphics context of button's size CGSize gcSize = tcv.frame.size; UIGraphicsBeginImageContext(gcSize); // add tcv's layer to context [tcv.layer renderInContext:UIGraphicsGetCurrentContext()]; // create background image now UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; // [tcv release]; } + (UIImage*) replaceColor:(UIColor*)color inImage:(UIImage*)image withTolerance:(float)tolerance { CGImageRef imageRef = [image CGImage]; NSUInteger width = CGImageGetWidth(imageRef); NSUInteger height = CGImageGetHeight(imageRef); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); NSUInteger bytesPerPixel = 4; NSUInteger bytesPerRow = bytesPerPixel * width; NSUInteger bitsPerComponent = 8; NSUInteger bitmapByteCount = bytesPerRow * height; unsigned char *rawData = (unsigned char*) calloc(bitmapByteCount, sizeof(unsigned char)); CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGColorSpaceRelease(colorSpace); CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef); CGColorRef cgColor = [color CGColor]; const CGFloat *components = CGColorGetComponents(cgColor); float r = components[0]; float g = components[1]; float b = components[2]; //float a = components[3]; // not needed r = r * 255.0; g = g * 255.0; b = b * 255.0; const float redRange[2] = { MAX(r - (tolerance / 2.0), 0.0), MIN(r + (tolerance / 2.0), 255.0) }; const float greenRange[2] = { MAX(g - (tolerance / 2.0), 0.0), MIN(g + (tolerance / 2.0), 255.0) }; const float blueRange[2] = { MAX(b - (tolerance / 2.0), 0.0), MIN(b + (tolerance / 2.0), 255.0) }; int byteIndex = 0; while (byteIndex < bitmapByteCount) { unsigned char red = rawData[byteIndex]; unsigned char green = rawData[byteIndex + 1]; unsigned char blue = rawData[byteIndex + 2]; if (((red >= redRange[0]) && (red <= redRange[1])) && ((green >= greenRange[0]) && (green <= greenRange[1])) && ((blue >= blueRange[0]) && (blue <= blueRange[1]))) { // make the pixel transparent // rawData[byteIndex] = 0; rawData[byteIndex + 1] = 0; rawData[byteIndex + 2] = 0; rawData[byteIndex + 3] = 0; } byteIndex += 4; } UIImage *result = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)]; CGContextRelease(context); free(rawData); return result; } +(UIImage *)changeWhiteColorTransparent: (UIImage *)image { CGImageRef rawImageRef=image.CGImage; const float colorMasking[6] = {222, 255, 222, 255, 222, 255}; UIGraphicsBeginImageContext(image.size); CGImageRef maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking); { //if in iphone CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height); CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); } CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef); UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); CGImageRelease(maskedImageRef); UIGraphicsEndImageContext(); return result; } +(UIImage *)changeColorTo:(NSMutableArray*) array Transparent: (UIImage *)image { CGImageRef rawImageRef=image.CGImage; // const float colorMasking[6] = {222, 255, 222, 255, 222, 255}; const float colorMasking[6] = {[[array objectAtIndex:0] floatValue], [[array objectAtIndex:1] floatValue], [[array objectAtIndex:2] floatValue], [[array objectAtIndex:3] floatValue], [[array objectAtIndex:4] floatValue], [[array objectAtIndex:5] floatValue]}; UIGraphicsBeginImageContext(image.size); CGImageRef maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking); { //if in iphone CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height); CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); } CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef); UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); CGImageRelease(maskedImageRef); UIGraphicsEndImageContext(); return result; } + (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { //UIGraphicsBeginImageContext(newSize); UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } @end 

मैंने हटाए गए सफेद रंग को इस कोड से पारदर्शी बनाया है ….

कॉल हो जाएगा …

  self.rawImage.image=[UIImage changeWhiteColorTransparent:originalStateImage]; 

मुझे उम्मीद है कि यह विचार आपकी मदद करेगा ….

सबसे आसान और छोटा:

ऐसा करने का तरीका जब आप UIImageView से निपटते हैं:

Obj सी:

 theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView setTintColor:[UIColor redColor]]; 

स्विफ्ट:

 let theImageView = UIImageView(image: UIImage(named:"foo")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)) theImageView.tintColor = UIColor.redColor() 

हाय छवि रंग पूरे रंग बदलने के लिए इस श्रेणी फ़ाइल का उपयोग करें ….

.h फ़ाइल:

 #import <UIKit/UIKit.h> @interface UIImage (AddtionalFunctionalities) //TintColor... - (UIImage *)imageWithTint:(UIColor *)tintColor; //scale and resize... -(UIImage*)scaleToSize:(CGSize)size; @end 

.m फ़ाइल:

 #import "UIImage+AddtionalFunctionalities.h" @implementation UIImage (AddtionalFunctionalities) - (UIImage *)imageWithTint:(UIColor *)tintColor { // Begin drawing CGRect aRect = CGRectMake(0.f, 0.f, self.size.width, self.size.height); CGImageRef alphaMask; // // Compute mask flipping image // { UIGraphicsBeginImageContext(aRect.size); CGContextRef c = UIGraphicsGetCurrentContext(); // draw image CGContextTranslateCTM(c, 0, aRect.size.height); CGContextScaleCTM(c, 1.0, -1.0); [self drawInRect: aRect]; alphaMask = CGBitmapContextCreateImage(c); UIGraphicsEndImageContext(); } // UIGraphicsBeginImageContext(aRect.size); // Get the graphic context CGContextRef c = UIGraphicsGetCurrentContext(); // Draw the image [self drawInRect:aRect]; // Mask CGContextClipToMask(c, aRect, alphaMask); // Set the fill color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextSetFillColorSpace(c, colorSpace); // Set the fill color CGContextSetFillColorWithColor(c, tintColor.CGColor); UIRectFillUsingBlendMode(aRect, kCGBlendModeNormal); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Release memory CGColorSpaceRelease(colorSpace); CGImageRelease(alphaMask); return img; } -(UIImage*)scaleToSize:(CGSize)size { // Create a bitmap graphics context // This will also set it as the current context UIGraphicsBeginImageContext(size); // Draw the scaled image in the current context [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; // Create a new image from current context UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // Pop the current context from the stack UIGraphicsEndImageContext(); // Return our new scaled image return scaledImage; } @end 

विधि कॉल होगी:

  self.outputImage.image=[sourceImage imageWithTint:[UIColor redColor]]; 

यदि आप छवि का उपयोग करना चाहते हैं तो इसका मतलब यह है:

 self.outputImage.image=[sourceImage imageWithTint:[UIColor colorWithPatternImage:[UIImage imageNamed: @"red.jpg"]]]; 

उम्मीद है इससे आपको मदद मिलेगी…

चित्र प्रस्तुतीकरण मोड को फिर रंग उद्देश्य के लिए उपयोग करें tintcolor संपत्ति का उपयोग करें।

 yourImageView.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [yourImageView setTintColor:[UIColor redColor]]; 

आप UIView बना सकते हैं जो UIImageView संग्रहीत करता है और UIview पृष्ठभूमि रंग बदलता है।

 UIView *viewForImage = ....; UIImageView *imageView = .....; ... [viewForImage addSubview: imageView]; [self.view addSubview:viewForImage]; ... 

और फिर उदाहरण के लिए उपयोग करें

 [viewForImage setBackgroundColor: [UIColor redColor]]; 

उद्देश्य- c का उपयोग करने वाली छवियों के साथ खेलने के लिए, मुख्यतः आपको क्वार्ट्ज 2 डी / कोर ग्राफिक्स फ्रेमवर्क का उपयोग करना होगा। मुझे लगता है कि यह आपके लिए अपने काम को पूरा करने का सबसे आसान तरीका होगा।

क्वार्ट्ज 2 डी दिशानिर्देश के लिए लिंक यहां है , दिशानिर्देश बहुत व्यापक है बस रंग के साथ बिटमैप को भरने में कहीं एक नज़र है।

इसके अलावा मेरे ब्लॉग में भारी इमेज प्रोसेसिंग के बारे में मेरे पास कुछ रिकॉर्ड हैं, आप देख सकते हैं, यह सहायक हो सकता है http://levonp.blogspot.de/2012/05/quartz-getting-diff-images-of-two.html

बेशक आप इसे ओपनजीएल, ओपनसीवी इत्यादि जैसे अधिक उन्नत सामानों का उपयोग कर सकते हैं।

छवि का रंग बदलने के लिए एक बहुत आसान समाधान। आइडिया: UIImage और UIImageView के लिए एक्सटेंशन

स्विफ्ट 3, Xcode 8.1। https://stackoverflow.com/a/40884483/4488252

मेरे उत्तर से कोड नमूना (ऊपर दिए गए लिंक):

 // use extension UIImage newImageView = createNewImageView(x: 100) newImageView.image = UIImage(named: "Apple")?.imageWithColor(newColor: UIColor.blue) // use extension UIImageView newImageView = createNewImageView(x: 160) newImageView.image = UIImage(named: "Apple") newImageView.imageColor = UIColor.green