0

画像をキャプチャしながら、1枚のオーバーレイ画像を配置するカメラアプリを開発しています。次のコードを使用して画像を結合する処理を行っていますが、ロゴの位置が適切ではありません。

- (UIImage*)addOverlayToBaseImage:(UIImage*)baseImage {
     UIImage *newImage = [self CombineImage:baseImage];
     return newImage;
}

-(UIImage *)CombineImage :(UIImage*)myCapturedImage{ 

  CGSize finalSize = [myCapturedImage size];
  CGSize overlaySize = [overlayGraphic size];
  UIGraphicsBeginImageContext(finalSize);

  [myCapturedImage drawInRect:CGRectMake(0,0,finalSize.width,finalSize.height)];

  CGFloat xScaleFactor = finalSize.width / 320;
  CGFloat yScaleFactor = finalSize.height / 480;

  [overlayGraphic drawInRect:CGRectMake(30 * xScaleFactor, 100 * yScaleFactor, overlaySize.width * xScaleFactor, overlaySize.height * yScaleFactor)]; 

  UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext();
  return combinedImage;
 }    

このURL[ http://www.musicalgeometry.com/?p=1681]から参照を取得し、そのonrキャプチャカメラビューとonverlayを画像で使用します

私のコードに間違いがあれば教えてください。

ありがとう。

4

2 に答える 2

0

これを試して...

- (UIImage*)addOverlayToBaseImage:(UIImage*)baseImage{

UIImage *overlayImage = [UIImage imageNamed:@"img.png"];    
CGPoint topCorner = CGPointMake(0, 0);
CGSize targetSize = CGSizeMake(320, 480);   
CGRect scaledRect = CGRectZero;

CGFloat scaledX = 480 * baseImage.size.width / baseImage.size.height;
CGFloat offsetX = (scaledX - 320) / -2;

scaledRect.origin = CGPointMake(offsetX, 0.0);
scaledRect.size.width  = scaledX;
scaledRect.size.height = 480;

UIGraphicsBeginImageContext(targetSize);    
[baseImage drawInRect:scaledRect];  
[overlayImage drawAtPoint:topCorner];   
UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();    

return result;  
}
于 2012-08-08T11:36:59.613 に答える
0

この行を置き換えてみてください:

 [overlayGraphic drawInRect:CGRectMake(30 * xScaleFactor, 100 * yScaleFactor,
 overlaySize.width * xScaleFactor, overlaySize.height * yScaleFactor)];

この行で

[overlayGraphic drawInRect:CGRectMake(0, 0, finalSize.width, finalSize.Height)];
于 2012-08-08T13:01:54.640 に答える