0

Cordova/jQuery Mobile を使用して iPhone/iPad アプリを作成しています。次のスクリーンショット プラグインhttps://github.com/josemando/phonegap-plugins/commit/4c2ec54ae001ad409e4d4fe6f5ec6b9ef8b7dc3fを使用しました。スクリーンショットをキャプチャし、カメラ ロール アルバムに保存します。ただし、Javascript でこの画像を取得して、最終的に Web サーバーにアップロードするにはどうすればよいですか。

次の js スクリプトを使用してスクリーンショット関数を実行しましたが、画像が返されません。

Screenshot.prototype.saveScreenshot = function() {
    cordovaRef.exec("Screenshot.saveScreenshot");
};

これは Screenshot.m ファイルです。

#import "Screenshot.h"

@implementation Screenshot

@synthesize webView;

- (void)saveScreenshot:(NSArray*)arguments withDict:(NSDictionary*)options
{
CGRect imageRect;
CGRect screenRect = [[UIScreen mainScreen] bounds];

// statusBarOrientation is more reliable than UIDevice.orientation
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { 
    // landscape check
    imageRect = CGRectMake(0, 0, CGRectGetHeight(screenRect), CGRectGetWidth(screenRect));
} else {
    // portrait check
    imageRect = CGRectMake(0, 0, CGRectGetWidth(screenRect), CGRectGetHeight(screenRect));
}

UIGraphicsBeginImageContext(imageRect.size);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextTranslateCTM(ctx, 0, 0);
CGContextFillRect(ctx, imageRect);

[webView.layer renderInContext:ctx];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
UIGraphicsEndImageContext();

UIAlertView *alert= [[UIAlertView alloc] initWithTitle:nil message:@"Image Saved" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}

@end
4

1 に答える 1

0

私はこれがうまくいくとは思わない!

UIImageWriteToSavedPhotosAlbum(画像、nil、nil、nil);

例として:

UIImageWriteToSavedPhotosAlbum(theImage,
   self, // send the message to 'self' when calling the callback
   @selector(thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:), // the selector to tell the method to call on completion
   NULL); // you generally won't need a contextInfo here

ここを見て

画像を取得する

- (UIImage*)saveScreenshot:(NSArray*)arguments withDict:(NSDictionary*)options
....
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

....
 UIGraphicsEndImageContext();
....

return image;
于 2012-07-12T21:03:24.983 に答える