动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView

时间:2022-10-23 09:51:34

动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView

动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView

效果如下:

动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView

BlackAndWhiteView.h 与 BlackAndWhiteView.m

//
// BlackAndWhiteView.h
// BlackAndWhiteView
//
// Created by YouXianMing on 14-10-4.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <UIKit/UIKit.h> @interface BlackAndWhiteView : UIView @property (nonatomic) float blackAlpha;
@property (nonatomic, strong) UIImage *image; - (void)startImageProcessing; @end
//
// BlackAndWhiteView.m
// BlackAndWhiteView
//
// Created by YouXianMing on 14-10-4.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "BlackAndWhiteView.h" @interface BlackAndWhiteView () @property (nonatomic, strong) UIImageView *normalView;
@property (nonatomic, strong) UIImageView *blackView; @property (nonatomic, strong) UIImage *blackImage; @end @implementation BlackAndWhiteView - (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_normalView = [[UIImageView alloc] initWithFrame:self.bounds];
_blackView = [[UIImageView alloc] initWithFrame:self.bounds];
_blackView.alpha = .f; [self addSubview:_normalView];
[self addSubview:_blackView];
}
return self;
} - (void)startImageProcessing
{
if (_image) {
_normalView.image = _image; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ), ^{ if (_blackImage == nil) {
_blackImage = [self grayScale:_image];
} dispatch_async(dispatch_get_main_queue(), ^{
_blackView.image = _blackImage;
});
});
}
} #pragma mark - 私有方法
- (UIImage *)grayScale:(UIImage *)inputImage
{
int width = inputImage.size.width;
int height = inputImage.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate(nil,
width,
height,
, // bits per component
,
colorSpace,
kCGBitmapByteOrderDefault); CGColorSpaceRelease(colorSpace); if (context == NULL) {
return nil;
} CGContextDrawImage(context,
CGRectMake(, , width, height), inputImage.CGImage);
CGImageRef image = CGBitmapContextCreateImage(context);
UIImage *grayImage = [UIImage imageWithCGImage:image];
CFRelease(image);
CGContextRelease(context); return grayImage;
} #pragma mark - 重写setter方法
@synthesize blackAlpha = _blackAlpha;
- (void)setBlackAlpha:(float)blackAlpha
{
_blackAlpha = blackAlpha;
_blackView.alpha = blackAlpha;
} - (float)blackAlpha
{
return _blackAlpha;
} @end

使用的源码:

//
// ViewController.m
// BlackAndWhiteView
//
// Created by YouXianMing on 14-10-4.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "ViewController.h"
#import "BlackAndWhiteView.h" @interface ViewController () @property (nonatomic, strong) BlackAndWhiteView *blackView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"red.jpg"];
_blackView = [[BlackAndWhiteView alloc] initWithFrame:CGRectMake(, ,
image.size.width,
image.size.height)];
_blackView.image = image;
_blackView.center = self.view.center;
[_blackView startImageProcessing];
[self.view addSubview:_blackView]; [self performSelector:@selector(run) withObject:nil afterDelay:];
} - (void)run
{
[UIView animateWithDuration: animations:^{
_blackView.blackAlpha = .f;
}];
} @end

动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView的更多相关文章

  1. 15款css3鼠标悬停图片动画过渡特效

    分享15款css3鼠标悬停图片动画过渡特效.这是一款15款不同效果的css3 hover动画过渡效果代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class ...

  2. CSS3实现鼠标移动到图片上图片变大(缓慢变大,有过渡效果,放大的过程是有动画过渡的,这个过渡的时间可以自定义)

    转载自:http://blog.csdn.net/u014175572/article/details/51535768 CSS3的transform:scale()可以实现按比例放大或者缩小功能. ...

  3. 使用 CSS3 动画实现的 3D 图片过渡特效

    这是一个基于 CSS3 动画实现的图片过渡效果,共有 Flip.Rotation.Multi-flip.Cube.Unfold 等6种效果,它们将证明 CSS3 Transform 和 Transit ...

  4. Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)

    前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...

  5. android 帧动画的实现及图片过多时OOM解决方案&lpar;一&rpar;

    一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...

  6. 10款让人惊叹的HTML5&sol;jQuery图片动画特效

    1.HTML5相册照片浏览器 可连接Flickr照片服务 以前我们经常会分享一些jQuery相册浏览插件,效果不错,实用性也很强.不过如果能利用HTML5来实现相册浏览器,那么相册浏览效果肯定会更加炫 ...

  7. iOS 用Swipe手势和动画实现循环播放图片

    主要想法 添加3个ImageView展示图片,实现图片的无限循环. 使用Swipe手势识别用户向右或向左滑动图片. 使用CATransition给ImageView.layer添加动画,展示图片更换的 ...

  8. 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 &colon;1-2 动画过渡

    动画过渡(Transitions) 这一小节我们先来讲“动画过渡(Transitions)”这个插件的使用,源文件:transition.js Bootstrap框架默认给各个组件提供了基本动画的过渡 ...

  9. iOS中图片动画的三种模式及基本的代码实现

    -(void)play { //第一种图片动画模式 头尾方式 //头尾方式 [UIView beginAnimations:nil context:nil];//动画开始 [UIView setAni ...

随机推荐

  1. C&plus;&plus; trivial和non-trivial构造函数及POD类型(转)

    原博客地址http://blog.csdn.net/a627088424/article/details/48595525 最近正纠结这个问题就转过来了,做了点补充(参考<深度探索C++对象模型 ...

  2. Improving the AbiWord&&num;39&semi;s Piece Table

    Improving the AbiWord's Piece Table[转] One of the most critical parts of any word processor is the b ...

  3. 编写高质量代码改善java程序的151个建议——&lbrack;52-57&rsqb;String &excl;about String How to use them&quest;

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks Although the world is full of s ...

  4. VC分发包版本问题

    来源:http://www.cnblogs.com/mixiyou/archive/2010/02/09/1663620.html 之前曾经写过一篇个人经历,是关于VC2005分发包版本不一致而引起应 ...

  5. banner幻灯片

    emmm本来想用js写的,但是感觉难就换了jquery. 1.把图片的位置.透明度.宽高.z-index信息用数组datas保存起来,移动的时候直接把位置等信息赋值给li. 2.点击next,即显示下 ...

  6. 02&lowbar;LInux的目录结构&lowbar;我的Linux之路

    前两节已经教大家怎么在虚拟机安装Linux系统 这一节我们来学习Linux的目录结构,讲一下linux的整个系统架构,提前熟悉一下Linux 在Linux或Unix系统中有一个非常重要的概念,就是一切 ...

  7. 视频H265格式压缩,软件压缩方法,硬件的没有条件,没法测试。

    libx265软压c:/ffmpeg/ffmpeg.exe -i input.mp4 -c:v libx265 -preset:v fast output.mp4 原文件大小:610.87mb 目标文 ...

  8. OC的反射机制

    反射机制主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.对于人一个对象,都能够调用这个对象的任意方法和属性.这种 ...

  9. &lbrack;HEOI2016&sol;TJOI2016&rsqb;序列

    题解: 很水的题目 首先容易发现每个位置实际上只有最大值是有用的 然后把条件变成dp[i]=max(dp[j]+1)(j<i,F[i]>G[j],G[i]>H[j]) 然后我研究了一 ...

  10. Java如何检查端口是否被使用?

    在Java编程中,如何扫描打开的端口(是否被使用)? 以下示例显示如何通过创建 Socket 对象来检查主机上打开或正在使用的端口(相当于一个简单的端口扫描器). package com.yiibai ...