动画和图片的处理

在学习图片处理和动画的处理的时候,有很多概念需要掌握,记录下来以便随时查阅。
1> 通过Layer设置UIView控件外观
* borderWidth 设置边框大小
* borderColor 设置边框颜色
* cornerRadius 设置圆角
下面属性必须同时设置了阴影才有效果。
* shadowColor 设置阴影颜色
* shadowOffset 设置阴影偏差
* shadowOpacity 设置阴影不透明度,取值0~1。默认值为0。表示透明。

2> 通过Layer设置UIImageView控件外观(注意跟UIView的区别)
* 设置 UIImageView的圆角必须同时执行下面两行代码

self.imageView.layer.cornerRadius =10;
self.imageView.layer.masksToBounds =YES;
    为什么普通的UIView设置圆角一行就可以,UIImageView就需要两行?
    答:因为UIImageView显示的图片是通过它的layer的contents属性显示的。图片默认是填满整个layer的,self.imageView.layer.cornerRadius仅仅是设置了layer为圆角,而layer上面的图片并没有圆角,所以需要设置self.imageView.layer.masksToBounds为YES,这样超出layer的图片内容就会被裁剪掉。

    * 设置UIImageView的阴影
self.imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
            self.imageView.layer.shadowOffset = CGSizeMake(-10, -10);
            self.imageView.layer.shadowOpacity =0.5;
    为什么UIImageView不能同时设置阴影和圆角?
    答:设置圆角时必须设置masksToBounds为YES。一旦设置masksToBounds为YES,那么阴影就会被裁剪掉了。所以要想同时设置 UIImageView的圆角和阴影就只能通过其他方法。

3>通过Layer设置UIButton控件外观

// 设置圆角
        self.button.imageView.layer.masksToBounds =YES;
        self.button.imageView.layer.cornerRadius =10;
        // 设置阴影
        self.button.layer.shadowColor = [UIColor greenColor].CGColor;
        self.button.layer.shadowOffset = CGSizeMake(10,10);
        self.button.layer.shadowOpacity =0.5;
    注意:要想同时设置按钮圆角和阴影,必须不能设置按钮的背景图片,只能通过setImage:forState:来设置按钮图片,并且按钮的backgroundColor必须是clearColor。

4> layer的形变属性transform。

* 缩放
        // x,y缩放
        self.customView.layer.transform = CATransform3DMakeScale(0.5,0.5, 0);
 * 平移
        // x,y方向平移100,z方向不平移
        self.customView.layer.transform = CATransform3DMakeTranslation(100,100, 0);
 * 旋转--(ppt简介3d坐标系统)
        // 绕 x,y夹角45°旋转
        self.customView.layer.transform = CATransform3DMakeRotation(M_PI_4,1, 1,0);
// 绕z轴旋转
        self.customView.layer.transform = CATransform3DMakeRotation(M_PI_4,0, 0,1);
//通过KVC来设置
         NSValue *v=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(100,100, 0)];
         [self.customView.layer setValue:v forKeyPath:@"transform"];
//如果是只需要设置在某一个方向上的移动,可以参考下面的代码
         //在x的方向上向左移动100
         [self.customView.layer setValue:@(100) forKeyPath:@"transform.translation.x"];
         可以传递哪些 key path,在官方文档搜索"CATransform3D  key paths"

5、代码创建新图层

  CALayer *layer = [CALayer layer];
    layer.frame = bgLayer.bounds;
    layer.contents = (id)[UIImage imageNamed:@"lufy"].CGImage;
    layer.cornerRadius = 10;
    layer.masksToBounds = YES;
    layer.backgroundColor  = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:layer];
从这里可以看出,没有view也可以做开发。也能利用图层搞一个UIImageView出来。那在开发中是使用图层好还是UIView好? ppt解答。

5>同时设置 UIImageView的圆角和阴影。

  // 创建一个背景图层,该图层负责设置阴影
    CALayer *backGroundLayer = [CALayer layer];
    backGroundLayer.frame = CGRectMake(0,0, 100,100);
    backGroundLayer.shadowColor = [UIColor greenColor].CGColor;
    backGroundLayer.shadowOffset = CGSizeMake(10,10);
    backGroundLayer.shadowOpacity = 0.5;
// 创建一个图片图层,该图层负责显示图片并设置圆角,并将该图层作为子图层添加到背景图层上面去
    CALayer *imageViewLayer = [CALayer layer];
    imageViewLayer.frame = bgLayer.bounds;
    imageViewLayer.contents = (id)[UIImage imageNamed:@"lufy"].CGImage;
    imageViewLayer.cornerRadius = 10;
    imageViewLayer.masksToBounds = YES;
    imageViewLayer.backgroundColor  = [UIColor redColor].CGColor;
    [bgLayer addSublayer:imageViewLayer];

    [self.view.layer addSublayer:bgLayer];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中可以使用卷积神经网络(CNN)对图片进行动漫风格化处理,常见的方法有CycleGAN和MangaGAN。这里以MangaGAN为例进行说明。 使用Matlab中的MangaGAN对图片进行动漫风格化处理的步骤如下: 1. 读入需要进行动漫风格化处理的原始图片,并将其转换为网络输入所需的格式。 2. 使用Matlab中的MangaGAN网络加载预训练权重,并将原始图片输入网络中。 3. 使用Matlab中的反向传播算法对网络进行训练,使得原始图片逐渐趋向于动漫风格化的效果。 4. 输出训练得到的动漫风格化图片。 下面是一个简单的Matlab代码示例: ```matlab % 读入原始图片并转换为网络输入格式 orig_img = imread('original.jpg'); orig_img = imresize(orig_img, [256, 256]); orig_img = single(orig_img); orig_img = (orig_img - 127.5) / 127.5; % 使用MangaGAN网络进行动漫风格化处理 lr = 0.0002; num_iters = 2000; for i = 1:num_iters % 计算训练损失并更新网络 [G_loss, D_loss] = compute_loss(orig_img, G, D); gradients_G = dlgradient(G_loss, G.Learnables); G.Learnables = G.Learnables - lr * gradients_G; gradients_D = dlgradient(D_loss, D.Learnables); D.Learnables = D.Learnables - lr * gradients_D; end % 输出训练得到的动漫风格化图片 generated_img = predict(G, dlarray(orig_img)); generated_img = (squeeze(gather(generated_img)) + 1) / 2; imshow(generated_img); ``` 需要注意的是,MangaGAN网络需要使用Deep Learning Toolbox中的深度学习函数进行实现,同时训练过程需要较长时间,需要在计算资源允许的情况下进行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值