सहेज लिया गया है मैं ऑब्जेक्टिव-सी में UIImages की तुलना जब एक छवि पहले से ही एक को बचाने और लोड की प्रक्रिया NSSearchPathForDirectoriesInDomains विधि का उपयोग कर के माध्यम से किया गया है के बारे में एक सवाल है के खिलाफ एक छवि की तुलना करना।ऑब्जेक्टिव-सी: एक और छवि है कि पहले
जो मैं चाहता का उद्देश्य क्या छवि प्रदर्शित करता है के आधार पर एक क्लिक करने पर एक नए स्क्रीन करने के लिए उपयोगकर्ता में भेजना है। एक काले रंग की छवि और एक हरे रंग की छवि -
सरलता के लिए मान लीजिए कि दो संभावनाएं देखते हैं कि चलो। ब्लैक इमेज पर क्लिक करने से आपको xib1 पर ले जाता है और हरी छवि पर क्लिक करने से आपको xib2 पर ले जाता है।
यह काफी सरल है और जब तक मैं एक को बचाने और लोड प्रणाली को लागू किया है काम कर रहा है।
मैं कर बचाने के लिए निम्नलिखित:
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
pngFilePath = [NSString stringWithFormat:@"%@/test.png",documentsDirectory];
data1 = [NSData dataWithData:UIImagePNGRepresentation([level1part1 objectAtIndex:0])];
[data1 writeToFile:pngFilePath atomically:YES];
और मैं निम्न कार्य लोड करने के लिए:
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
pngFilePath = [NSString stringWithFormat:@"%@/test.png",documentsDirectory];
UIImage *image = [UIImage imageWithContentsOfFile:pngFilePath];
[button1 setImage:image forState:UIControlStateNormal];
यह ठीक है और जब मैं इस कार्यक्रम से बाहर निकलें और उसे पुन: प्रारंभ छवि पर बनाए रखा है स्क्रीन जैसा मैं चाहता हूं। Hypothetically मान लें कि बटन 1 पर दिखाई देने वाली छवि हरी छवि है। (Button1 यह है)
जब मैं इस की आईडी के साथ बटन पर क्लिक करने के बाद निम्नलिखित कोड फोन:
if(sender.currentImage == [UIImage imageNamed:self.greenImage])
{
VisitAlreadyCorrectScreen *screen = [[VisitAlreadyCorrectScreen alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
}
भले ही currentImage हरी छवि है और हरे रंग की छवि मैं रूप में एक ही तस्वीर है यह करने के लिए की तुलना कर रहा हूँ, मुझे लगता है कि क्योंकि मैं बचाने की प्रक्रिया तुलना काम नहीं करता है के रूप में वे स्मृति में विभिन्न स्थानों में आयोजित की जाती हैं में स्मृति में हरे रंग की छवि को बचाया - सत्यापित निम्नलिखित NSLog द्वारा:
Current Image: <UIImage: 0x95614c0>, and Yes Image: <UIImage: 0xde748f0>
मैं दो छवियों की तुलना करने के तरीके को कैसे काम नहीं कर सकता है कि इस मामले में वे मेल खाते हैं (वे दोनों संसाधन फ़ोल्डर में मेरे पास एक ही छवि से संबंधित हैं)। क्या किसी के पास कोई सुझाव है?
कृपया मुझे बताएं कि क्या मैंने समस्या को ठीक से समझाया नहीं है!
अग्रिम धन्यवाद!
यदि आपको 100% पिक्सेल-बाय-पिक्सेल तुलना की आवश्यकता नहीं है, तो आप इसका उपयोग कर सकते हैं, जो पॉल एन के समाधान से लगभग 50 गुना तेज है: http://stackoverflow.com/a/19668235/423171 – cprcrack
यह हो सकता है कुछ पहचानकर्ता क्षेत्रों को जोड़ने और तरीकों की तुलना करने के लिए UIImage को विस्तारित करने पर विचार करने योग्य होना चाहिए। (सुनिश्चित नहीं है कि UIImage को कितना खुश किया जाना है।) –