- 浏览: 2533296 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
UniversalTransTestViewController.h
#import <UIKit/UIKit.h> #import "ImageProcess.h" #define KFrame 20 @class ImageProcess; @interface UniversalTransTestViewController : UIViewController { UIImage *fromImage; UIImage *toImage; UIImage *ruleImage; UIImage *DestImage; UIImageView *drawImageView; ImageProcess *imgS1Proc; ImageProcess *imgS2Proc; ImageProcess *imgRuleProc; ImageProcess *imgDestProc; NSCondition *timerCondition; unsigned char *pixelDataS1; unsigned char *pixelDataS2; unsigned char *pixelDataRule; unsigned char *pixelDataDest; int pixelPosition[480][320]; int bank[480][320]; BOOL isRunning; NSTimer *timer; float countTime; int lim; } - (void)initImageView:(UIImage *)image; - (void)setTransAtLayer:(int)index method:(NSString *)method time:(int)time rule:(NSString *)ruleImageName; - (void)processImage; @end
UniversalTransTestViewController.m
#import "UniversalTransTestViewController.h" @implementation UniversalTransTestViewController - (void)viewDidLoad { fromImage = [UIImage imageNamed:@"Car2.jpg"]; toImage = [UIImage imageNamed:@"Car1.jpg"]; DestImage = nil; isRunning = YES; timerCondition = [[NSCondition alloc]init]; [self initImageView:fromImage]; [self setTransAtLayer:0 method:@"universal" time:2000 rule:@"r2.png"]; } - (void)initImageView:(UIImage *)image { drawImageView = [[UIImageView alloc] initWithImage:fromImage]; drawImageView.frame = CGRectMake((self.view.bounds.size.width - fromImage.size.width) / 2, (self.view.bounds.size.height - fromImage.size.height) / 2, fromImage.size.width, fromImage.size.height); CGAffineTransform rotate = CGAffineTransformMakeRotation(-1.57); drawImageView.transform = rotate; [self.view addSubview:drawImageView]; [drawImageView release]; } - (void)setTransAtLayer:(int)index method:(NSString *)method time:(int)time rule:(NSString *)ruleImageName { if([method isEqualToString:@"universal"]) { ruleImage = [UIImage imageNamed:ruleImageName]; countTime = 0; lim = 0; imgS1Proc = [[ImageProcess alloc] initWithImage:fromImage]; imgS2Proc = [[ImageProcess alloc] initWithImage:toImage]; imgRuleProc = [[ImageProcess alloc] initWithImage:ruleImage]; imgDestProc = [[ImageProcess alloc] initWithImage:fromImage]; pixelDataS1 = [imgS1Proc GetBegin]; pixelDataS2 = [imgS2Proc GetBegin]; pixelDataRule = [imgRuleProc GetBegin]; pixelDataDest = [imgDestProc GetBegin]; for (int i = 0; i < 480; i++) for (int j = 0; j < 320; j++) { pixelPosition[i][j] = (j * 480 + i) << 2; bank[i][j] = 0; } [NSThread detachNewThreadSelector:@selector(transImage) toTarget:self withObject:nil]; timer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(TimerClock:) userInfo:nil repeats:YES]; [timer fire]; } } - (void)TimerClock:(id)sender { [timerCondition broadcast]; } - (void)transImage { isRunning = YES; while (countTime < 2300) { [timerCondition wait]; lim += 255 / (2 * KFrame); [self processImage]; countTime += 1000 / KFrame; } [timer invalidate]; isRunning = NO; } - (void)processImage { NSLog(@"begin"); for (int i = 0; i < 480; i++) { for (int j = 0; j < 320; j++) { if(bank[i][j] < 1) { int count = pixelPosition[i][j]; if(pixelDataRule[count] < lim) { pixelDataDest[count] = pixelDataS2[count]; pixelDataDest[count + 1] = pixelDataS2[count + 1]; pixelDataDest[count + 2] = pixelDataS2[count + 2]; bank[i][j]++; } } } } NSLog(@"end"); if(DestImage != nil) [DestImage release]; DestImage = [imgDestProc getImage]; [self performSelectorOnMainThread:@selector(ChangeImage) withObject:nil waitUntilDone:NO]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { static int num = 0; if(isRunning == NO) { countTime = 0; lim = 0; [imgDestProc release]; imgDestProc = [[ImageProcess alloc] initWithImage:fromImage]; for (int i = 0; i < 480; i++) for (int j = 0; j < 320; j++) { bank[i][j] = 0; } [imgRuleProc release]; switch (num) { case 0: imgRuleProc = [[ImageProcess alloc] initWithImage:[UIImage imageNamed:@"r1.png"]]; break; case 1: imgRuleProc = [[ImageProcess alloc] initWithImage:[UIImage imageNamed:@"r2.png"]]; break; case 2: imgRuleProc = [[ImageProcess alloc] initWithImage:[UIImage imageNamed:@"r3.png"]]; break; case 3: imgRuleProc = [[ImageProcess alloc] initWithImage:[UIImage imageNamed:@"r5.png"]]; break; default: imgRuleProc = [[ImageProcess alloc] initWithImage:[UIImage imageNamed:@"r5.png"]]; break; } num++; if(num > 3) num = 0; pixelDataRule = [imgRuleProc GetBegin]; pixelDataDest = [imgDestProc GetBegin]; [NSThread detachNewThreadSelector:@selector(transImage) toTarget:self withObject:nil]; timer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(TimerClock:) userInfo:nil repeats:YES]; } } - (void)ChangeImage { [drawImageView setImage:DestImage]; } - (void)dealloc { [imgS1Proc release]; [imgS2Proc release]; [imgRuleProc release]; [imgDestProc release]; [super dealloc]; } @end
ImageProcess.h
#import <Foundation/Foundation.h> @interface ImageProcess : NSObject { CGContextRef context; // bitmap context unsigned char *pixelData; // bitmap data pointer int width, height; // bitmap width and height } - (id) initWithImage: (UIImage *) image; // initialize and load image - (unsigned char *)colorAtX:(int)x y:(int)y; // get pixel color - (unsigned char *)GetBegin; - (UIImage *)getImage; // get image - (void)dealloc; // dealloc @end
ImageProcess.m
#import "ImageProcess.h" @implementation ImageProcess // create BitmapContext with UIImage and use 'pixelData' as the data pointer - (id) initWithImage: (UIImage *) image { self = [super init]; if(!self) { return nil; } CGColorSpaceRef colorSpace; int bitmapByteCount; int bitmapBytesPerRow; // bitmap settings context = NULL; width = image.size.width; height = image.size.height; bitmapBytesPerRow = (width * 4); bitmapByteCount = (bitmapBytesPerRow * height); // create color space colorSpace = CGColorSpaceCreateDeviceRGB(); // create data pointer free(pixelData); pixelData = malloc(bitmapByteCount); // create bitmap context CGContextRelease(context); context = CGBitmapContextCreate (pixelData, width, height, 8, bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast); CGColorSpaceRelease(colorSpace); // draw image data to context CGContextDrawImage(context, CGRectMake(0, 0, width, height), image.CGImage); pixelData = CGBitmapContextGetData(context); return self; } - (unsigned char *)colorAtX:(int)x y:(int)y { return & (pixelData[(y * width + x) << 2]); } - (unsigned char *)GetBegin { return pixelData; } - (UIImage *)getImage { CGImageRef cgImg = CGBitmapContextCreateImage(context); UIImage *localImg = [[[UIImage alloc] initWithCGImage:cgImg] autorelease]; CGImageRelease(cgImg); return localImg; } - (void)dealloc { [super dealloc]; free(pixelData); CGContextRelease(context); } @end
示例图:
- ViewTrans.zip (679.2 KB)
- 下载次数: 17
发表评论
-
Error watching file for changes: EMFILE
2016-12-15 11:57 1302执行npm start后报错: Error watc ... -
CocoaPods升级1.1.1报错
2016-12-15 08:39 795ERROR: While executing gem .. ... -
Visual Studio Code运行React Native报错
2016-06-13 09:43 1614React Native:0.27.2 React:15 ... -
React Native 0.27.2编译报错this._nativeModule.addListener is not a function
2016-06-12 15:21 3857React Native:0.27.2 React:15 ... -
Unable to resolve module ReactDefaultPerf from
2016-06-02 13:04 2785package.json信息如下: "reac ... -
React Native 0.26.2编译报错Undefined symbols for architecture x86_64
2016-05-26 11:15 2019React Native:0.26.2 React:15. ... -
Failed to update auto layout status: Failed to load designables from path (null)
2016-04-05 22:11 1714确保CocoaPods是0.36.1以上版本,然后在podf ... -
集成微信支付出现Undefined symbols for architecture x86_64错误
2016-03-21 13:22 1751Undefined symbols for architec ... -
React Native热部署之CodePush
2016-01-10 22:27 6247本文使用的环境是Mac OS 10.11.1、Xcode ... -
浅谈React Native中的FlexBox布局
2015-11-17 18:38 4305React Native通过一个基于FlexBox的布局引 ... -
React Native之构建一个简单的列表页
2015-10-23 14:45 2165本文中我们将创建一个简单的电影应用,这个应用将从Rotten ... -
React Native之环境搭建
2015-10-20 16:30 1446本文使用的环境是Mac O ... -
获取图片属性的方法
2015-10-18 20:43 3145很多时候我们需要获 ... -
NSCache的下标用法
2015-09-18 00:19 1216NSCache类和NSDictionary类很相似,也提供 ... -
如何给category添加属性
2015-08-16 10:41 692主要是使用了runtime中的associative机制。 ... -
UITableView的两种重用Cell方法的区别
2015-08-10 13:07 16149UITableView中有两种重用Cell的方法: - ... -
SDImageCache.m报错Unused variable 'fileName'
2015-08-04 21:56 1175GCC手册中的相关解释: unused:This att ... -
Swift调用Objective-C
2015-07-13 23:33 1228Swift调用Objective-C需要一个名为<工程 ... -
使用GCD实现倒计时
2015-07-24 21:47 1085__block int timeout = 60; // ... -
导航栏加分割线的实现
2015-07-01 22:00 1763self.view.backgroundColor = [U ...
相关推荐
在数字媒体制作和视频编辑领域,图片转场特效是一种常用的技术,用于在多个图像...而"图片特效2010-8-12"这个文件名可能是其中的一个示例文件,可能包含了2010年8月12日创建的一些图片转场效果实例,供用户学习和参考。
【图片转场特效VB版】是一个使用Visual Basic(VB)编程语言实现的程序,它能够为图像添加过渡效果,使得在展示多张图片时产生平滑的视觉转换。VB是微软开发的一种面向对象的编程语言,它在Windows应用程序开发中...
Flash图片转场特效,其实就是图片与图片交替显示进的过渡效果,加入了动画特效,这样看上去不至于那么单调。本转场特效是基于方块渐变型的效果,很动感。可广泛应用于基于Flash的图片展示、相册、焦点图幻灯片中。
' 程序数组 = { &从左往右推出效果, &从右往左推出效果, &从上往下推出效果, &从下往上推出效果, &从左边抽出效果, &从右边抽出效果, &从上边抽出效果, &从下边抽出效果, &从左上抽出效果, &从左下抽出效果, &从右...
在IT行业中,图片转场技巧和过渡特效是多媒体制作、软件开发和图形用户界面设计中的重要组成部分。这些技术主要用于创建视觉吸引力,使观众在不同图片或界面之间平滑过渡,增强用户体验。以下将详细探讨这一领域的...
图片查看器,不过集成了20多种图片转场特效,支持以幻灯片方式播放图片,这些方式和Office PPT幻灯片软件中的方式十分相似,有渐变、淡入淡了、透明擦除、圆形透明擦除、溶解等动画效果,还可指定动画切换的方向,...
该资源是一个包含源代码的压缩包,名为"Transition.rar",专用于实现平滑的图片转场效果。在计算机编程领域,图片转场效果通常指的是在显示一组图像时,通过过渡动画来使得图像之间的切换更加自然和流畅。这种效果...
用户可以通过打开这些文件来查看和学习如何在Flash环境中创建和实现XML控制的图片转场效果。 总的来说,通过XML控制图片转场,开发者可以实现动态、灵活且可扩展的图片切换效果,这在交互设计和富媒体应用中非常...
gl-translatte 是一个专门用于实现这种效果的工具,它利用 OpenGL ES(一种跨平台的图形库)进行高效的图像处理,为用户提供了丰富的图片转场特效。 1. 图片转场基本概念: 图片转场是视觉设计中的关键元素,用于...
一、转场效果分类 1. **共享元素转场**(Shared Element Transition):这种转场允许两个Activity之间共享一个或多个视图元素,保持其在转场过程中的连续性,增强用户的感知。 2. **进入转场**(Enter Transition...
这个"多种jQuery图片转场切换效果演示.rar"压缩包包含了一系列利用jQuery实现的图片切换效果,对于网页设计师和前端开发者来说是一个非常有价值的资源。 首先,jQuery图片转场切换效果是网页焦点图或幻灯片展示的...
总的来说,这个资源包为AE用户提供了一套丰富的视频转场动画集合,方便他们在制作视频时快速添加高质量的转场效果,同时通过附加的图片、视频和链接,用户可以更全面地了解和掌握这些转场的应用。在实际使用过程中,...
在Swift中,我们通常会使用UIView动画来实现转场效果。UIView动画提供了简单的API来创建平滑的动画,包括淡入淡出、缩放、旋转等。结合遮罩技术,我们可以在动画过程中改变遮罩的形状或位置,从而实现图片的动态变化...
CSS3多种图片切换转场显示动画效果,这实际上是一个网页焦点图特效,但这个焦点图的图片切换效果几乎不重复,每切换一次,切换的过渡转场特效都不一样,有淡入淡出渐变,有旋转渐变,有向上向下滑出,有重叠显示,有...
标题表明这是一个包含60种不同转场效果的集合,适用于网页和Flash项目。转场音效在各种媒体作品中起到过渡和衔接的作用,提升用户体验,使得视觉和听觉内容更加流畅自然。 首先,让我们了解一下什么是转场音效。转...
"PR视频特效及视频转场特效中英文对照收集.pdf" 本资源文件提供了Premiere Pro 2.0视频转场特效的英汉对照表,涵盖了10大类视频特效,包括3D过渡、溶解、圈入、映射、卷页、滑行、特技、伸展、擦除和变焦等。这些...
【标题】"图片转场特效VB版"是一个基于Visual Basic(VB)开发的程序,它实现了图像之间的转场效果,具体来说是模仿了百叶窗的动画过渡效果。这种效果在多媒体展示、幻灯片制作或者视频编辑中非常常见,能够增加视觉...
用OpenCV实现两张图片的视频切换效果,包括时钟擦、中心圆放大的效果。 由于算法限制,速度较慢。 多媒体技术基础课程实验,仅供参考。
Premiere Pro 2.0 视频转场特效英汉对照表 Premiere Pro 是一款功能强大的视频编辑软件,它提供了多种视频转场特效,帮助用户创建丰富多样的视频内容。下面是 Premiere Pro 2.0 视频转场特效的英汉对照表: 1. 3D ...
易语言图片效果转换源码,图片效果转换,模块_随机显示效果,模块_推出效果之从左往右,模块_推出效果之从右往左,模块_推出效果之从上往下,模块_推出效果之从下往上,模块_抽出效果之从左边,模块_抽出效果之从右边,模块_...