0

我在相机叠加层上有一系列图像。当我单击按钮时,我需要使用相机视图拍摄一张叠加图像的快照。但是当我在设备中启动时出现以下错误。我搜索了一些我无法得到答案的现有代码。

错误:

[UIImage length]: unrecognized selector sent to instance 0x1d53b6b0 2013-04-02 11:27:18.748 
    ARimage[1166:907] *** Terminating app due to uncaught exception 
    'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x1d53b6b0'

数组叠加图像的代码:

    NSArray *arrayOfImageFiles=[[NSArray alloc]initWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],
[UIImage imageNamed:@"img3.png"],
[UIImage imageNamed:@"img4.png"],
[UIImage imageNamed:@"img5.png"], nil];//array of images.

     for(NSString * imageFileName in arrayOfImageFiles)//here you are getting string format but imageFileName is an image object
          {
    UIImage * overlay = [UIImage imageNamed: imageFileName];//here imageFileName is image simply give here  UIImage * overlay=imageFileName;
    if(overlay)
        {

       CGSize overlaySize = [overlay size];                                                                    

       [overlay drawInRect:CGRectMake(30 * xScaleFactor, 100 * yScaleFactor, overlaySize.width * xScaleFactor, overlaySize.height * yScaleFactor)];                                                                  
        } else {                                                                                                                                      
         NSLog( @"could not find an image named %@", imageFileName);   

           }
          }                                                             
        UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();                          
         [self setStillImage:combinedImage];                                                           
           UIGraphicsEndImageContext();                                                     
             [[NSNotificationCenter defaultCenter] postNotificationName:kImageCapturedSuccessfully object:nil];                                    

       }];                                                 
        }                          

捕获按钮单击的叠加图像:

 - (void)ButtonPressed {

    [self captureStillImageWithOverlay:[NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],
[UIImage imageNamed:@"img3.png"],
[UIImage imageNamed:@"img4.png"],
[UIImage imageNamed:@"img5.png"], nil]];                                                          

         }   

图像显示在相机叠加视图中。当我单击按钮捕获叠加图像时,出现错误。

4

2 回答 2

0

for声明:

for(NSString * imageFileName in arrayOfImageFiles)

没有意义。中的对象arrayOfImageFiles是 UIImage 的实例,而不是NSString. 在这一行

   UIImage * overlay = [UIImage imageNamed: imageFileName];

您将 UIImage 作为字符串参数传递,该参数永远不会起作用。

我认为您需要将代码更改为这样(使用新的数组初始化器语法):

NSArray *arrayOfImageFileNames = @[@"img1.png", @"img2.png", @"img3.png", @"img4.png", @"img5.png"];

for (NSString* imageFileName in arrayOfImageFileNames)
{  
    // The rest as per your code
}
于 2013-04-02T12:39:25.913 回答
0

试试这样

 NSArray *arrayOfImageFiles=[[NSArray alloc]initWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],
[UIImage imageNamed:@"img3.png"],
[UIImage imageNamed:@"img4.png"],
[UIImage imageNamed:@"img5.png"], nil];//array of images.

     for(NSString * imageFileName in arrayOfImageFiles)//here you are getting string format but imageFileName is an image object
          {
      UIImage * overlay=(UIImage *)imageFileName;
    if(overlay)
        {

       CGSize overlaySize = [overlay size];                                                                    

       [overlay drawInRect:CGRectMake(30 * xScaleFactor, 100 * yScaleFactor, overlaySize.width * xScaleFactor, overlaySize.height * yScaleFactor)];                                                                  
        } else {                                                                                                                                      
         NSLog( @"could not find an image named %@", imageFileName);   

           }
          }                                                             
        UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();                          
         [self setStillImage:combinedImage];                                                           
           UIGraphicsEndImageContext();                                                     
             [[NSNotificationCenter defaultCenter] postNotificationName:kImageCapturedSuccessfully object:nil];                                    

       }];                                                 
        }
于 2013-04-02T11:33:38.107 回答