屏幕上截图

//- (UIImage *)returnScreenshotImageViewWithScale:(CGFloat)scale
//获取keyWindow.layer
- (void)returnScreenshotImageViewWithScale:(CGFloat)scale
{

    UIGraphicsBeginImageContextWithOptions(CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height), YES, scale);
    
    [[UIApplication sharedApplication].keyWindow.layer renderInContext:UIGraphicsGetCurrentContext()];
    
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
      NSLog(@"1---%@",[UIApplication sharedApplication].keyWindow);
    NSLog(@"1---%f---%f",image.size.width,image.size.height);
    
//        NSLog(@"---%zd",self.cutScreenData.length);
    //保存到相册
        UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
    
        image = nil;
//    return image;

}


// 从view上截图
//- (UIImage *)getImage {
- (void)getImageFromView{
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(100, 100), YES, 1.0);  //NO,YES 控制是否透明
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    // 生成后的image
    NSLog(@"2---%f---%f",image.size.width,image.size.height);
    UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
    image = nil;
//    return image;
}


// 根据给定得图片,从其指定区域截取一张新得图片
//-(UIImage *)getImageFromImage{
- (void)getImageFromImage{
    //大图bigImage
    //定义myImageRect,截图的区域
    CGRect myImageRect = CGRectMake(70, 10, 30, 30);
    UIImage* bigImage= [UIImage imageNamed:@"girl"];
    CGImageRef imageRef = bigImage.CGImage;
    //大图尺寸,小图尺寸
    CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
    CGSize size;
    size.width = 30;
    size.height = 30;
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    //内容,小图尺寸、内容差()
    CGContextDrawImage(context, myImageRect, subImageRef);
    UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
    UIGraphicsEndImageContext();
    
    NSLog(@"3---%f---%f",smallImage.size.width,smallImage.size.height);
    UIImageWriteToSavedPhotosAlbum(smallImage, self, nil, nil);
    smallImage = nil;
//    return smallImage;
}


//图片等比例缩放
-(UIImage*)scaleToSize:(CGSize)size{
    CGFloat width = CGImageGetWidth(self.CGImage);
    CGFloat height = CGImageGetHeight(self.CGImage);
    
    float verticalRadio = size.height*1.0/height;
    float horizontalRadio = size.width*1.0/width;
    
    float radio = 1;
    if(verticalRadio>1 && horizontalRadio>1)
    {
        radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;
    }
    else
    {
        radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;
    }
    
    width = width*radio;
    height = height*radio;
    
    int xPos = (size.width - width)/2;
    int yPos = (size.height-height)/2;
    
    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的context
    UIGraphicsBeginImageContext(size);
    
    // 绘制改变大小的图片
    [self drawInRect:CGRectMake(xPos, yPos, width, height)];
    
    // 从当前context中创建一个改变大小后的图片
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();
    
    // 返回新的改变大小后的图片
    return scaledImage;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 平台上,可以使用 Lua 脚本实现屏幕截图,但需要依赖第三方库,如 luajava 或 slua。以下是一个示例代码,用于在 Android 平台上使用 Lua 实现屏幕截图: 1. 首先,在 Android 应用的 Java 代码中,创建一个 `takeScreenshot` 方法,用于实现屏幕截图: ```java public Bitmap takeScreenshot() { View rootView = getWindow().getDecorView().getRootView(); rootView.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(rootView.getDrawingCache()); rootView.setDrawingCacheEnabled(false); return bitmap; } ``` 2. 在 Lua 脚本中,调用 `luajava.bindClass` 函数将 Java 类绑定到 Lua 中: ```lua -- 加载 luajava 库 local luajava = require("luajava") -- 绑定 MainActivity 类 local MainActivity = luajava.bindClass("com.package.name.MainActivity") ``` 3. 调用 `MainActivity:takeScreenshot()` 方法获取屏幕截图: ```lua -- 调用 takeScreenshot 方法获取屏幕截图 local bitmap = MainActivity:takeScreenshot() ``` 以上代码中,通过 `luajava.bindClass` 函数将 Java 的 `MainActivity` 类绑定到 Lua 中。在 Lua 中,可以通过 `MainActivity:takeScreenshot()` 调用 `takeScreenshot` 方法获取屏幕截图。 需要注意的是,在 Android 应用中集成 Lua,需要使用第三方库,如 luajava 或 slua。可以通过 Gradle 依赖管理工具,在 Android 应用中添加 luajava 或 slua 的依赖库。同时,需要在 Android 应用的 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> ``` 这是因为 Android 平台上,需要获取读取帧缓冲区的权限才能够实现屏幕截图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值