我有一个UIImage(Cocoa Touch).从那以后,我很高兴得到一个CGImage或其他你想要的东西.我想写这个函数:
- (int)getRGBAFromImage:(UIImage *)image atX:(int)xx andY:(int)yy {
// [...]
// What do I want to read about to help
// me fill in this bit, here?
// [...]
int result = (red << 24) | (green << 16) | (blue << 8) | alpha;
return result;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在开发一个应用程序.因为我在imageviews
更改UIImageview
图像之前使用.SO 我需要在UIimage
obejct中获取该图像并与另一个UIImage
对象进行比较以找到它们是否为sam.所以请告诉我如何做到这一点.
当有一个图像已经使用NSSearchPathForDirectoriesInDomains方法进行保存和加载过程时,我有一个关于比较Objective-C中的UIImages的问题.
我想要的目的是根据图像显示的内容,在点击时将用户引导到新的屏幕.
为简单起见,我们假设有两种可能性 - 黑色图像和绿色图像.单击黑色图像将转到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];
Run Code Online (Sandbox Code Playgroud)
并加载我执行以下操作:
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];
Run Code Online (Sandbox Code Playgroud)
这很好,当我退出程序并重新启动它时,图像会保留在屏幕上,如我所愿.假设现在出现在button1上的图像是绿色图像.
当我点击id为sender的按钮后调用以下代码(这是button1):
if(sender.currentImage == [UIImage imageNamed:self.greenImage])
{
VisitAlreadyCorrectScreen *screen = [[VisitAlreadyCorrectScreen alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
即使currentImage是绿色图像,并且与我正在比较的绿色图像是相同的图像,我认为因为我在保存过程中将绿色图像保存到内存中,因此比较不起作用,因为它们保存在不同的地方在内存中 - 由以下NSLog验证:
Current Image: <UIImage: 0x95614c0>, and Yes …
Run Code Online (Sandbox Code Playgroud) 我找到了这段代码,并试图更好地理解它:
UIImage *img1 = // Some photo;
UIImage *img2 = // Some photo;
NSData *imgdata1 = UIImagePNGRepresentation(img1);
NSData *imgdata2 = UIImagePNGRepresentation(img2);
if ([imgdata1 isEqualToData:imgdata2]) {
NSLog(@"Same Image");
}
Run Code Online (Sandbox Code Playgroud)
这是否证实图像1与图像2完全相同?这种方法是最佳实践,还是有更好的方法?