コントロールとのUIView
両方を使用するがあります。そのビューのスクリーンショットをプログラムで取得したいと思います。UIKit
OpenGL
を使用するUIGraphicsGetImageFromCurrentImageContext()
と、OpenGL
内容が空白になります。このメソッドを使用するglReadPixels(...)
と、UIKitのコンテンツが空白になります。
完全なスクリーンショットを撮る方法として私は混乱しています。ありがとうございました!
コントロールとのUIView
両方を使用するがあります。そのビューのスクリーンショットをプログラムで取得したいと思います。UIKit
OpenGL
を使用するUIGraphicsGetImageFromCurrentImageContext()
と、OpenGL
内容が空白になります。このメソッドを使用するglReadPixels(...)
と、UIKitのコンテンツが空白になります。
完全なスクリーンショットを撮る方法として私は混乱しています。ありがとうございました!
use following code to take screen shot
-(UIImage *) screenshot
{
CGRect rect;
rect=CGRectMake(0, 0, 320, 480);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context=UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
-(UIImage *) screenshot
{
CGImageRef UIGetScreenImage(void);
CGImageRef screen = UIGetScreenImage();
UIImage* screenImage = [UIImage imageWithCGImage:screen];
CGImageRelease(screen); // you need to call this.
return screenImage;
}
さて、プログラムでiPhoneの画面をキャプチャする方法はほとんどありません
UIKIT の使用http://developer.apple.com/library/ios/#qa/qa1703/_index.html
AVFoundation フレームワークの使用http://developer.apple.com/library/ios/#qa/qa1702/_index.html
OpenGL ES の使用 http://developer.apple.com/library/ios/#qa/qa1704/_index.html
iOS 7 以降では、なぜ iOS 7 でプログラムによって作成されたスクリーンショットの見栄えが悪いのですか?も使用できます。
UIWindow の使用
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);
[self.window.layer renderInContext:ctx];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIView の使用
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viImage=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
これらの 6 つのオプションのうち、最初の方法は真のピクセル データを含む画像を提供するため、コピーと貼り付けと圧縮レベルの適用に非常に便利であることがわかりました。API には SDK が付属しているため、オプション 4 も気に入っています。
画質を落とさずに結果 Uiimage を取得します
- (UIImage *)captureView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *data = [UIImagePNGRepresentation(image) retain];
UImage *screenShot = [UIImage imageWithData:data];
プログラムで簡単なスクリーンショットを撮る方法は次のとおりですUIImage
。他のオブジェクトに使用したい場合は、 に置き換えてUIImage
ください。
.h
ファイル に追加NSData *Data;
してから、.m
ファイルにこれをコードに追加します
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *attachimage = [[UIImage alloc]initWithData:Data];
UIImage *viImage=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
attachimage = viImage;
UIImageWriteToSavedPhotosAlbum(viImage, nil, nil, nil);
OpenGL コンテンツがビュー内のどこにあるかがわかります。glReadPixels
そのため、結果をUIKit のスナップショットにコピーするのは簡単です。
多分..ここから何かを使うことができますか
- https://stackoverflow.com/questions/12413460/cocos2d-2-0-screenshots-on-ios-6
そしてここ...