- 浏览: 1316606 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
转 http://blog.csdn.net/zltianhen/article/details/6841466
1.UIWebView 播放(无法控制周期)
.h
[cpp] view plaincopy
- @interface webViewController : UIViewController {
- IBOutlet UIWebView *WebView;
- IBOutlet UINavigationBar *Nav;
- }
- @property (nonatomic, retain) IBOutlet UIWebView *WebView;
- @end
.m
[cpp] view plaincopy
- - (void)viewDidLoad {
- [super viewDidLoad];
- [WebView setOpaque:NO];
- [WebView setBackgroundColor:[UIColor clearColor]];
- Nav.topItem.title=@"Welcome";
- Nav.topItem.leftBarButtonItem=nil;
- NSString* gifFileName = @"j_0002.gif";
- NSMutableString* htmlStr = [NSMutableString string];
- [htmlStr appendString:@"Hello Honey"];
- [htmlStr appendString:@"<p><img src=\""];
- [htmlStr appendFormat:@"%@",gifFileName];
- [htmlStr appendString:@"\" alt=\"picture\"/>"];
- [WebView loadHTMLString:htmlStr baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
- }
2.glgif提供的开源代码实现(目前无法控制周期,需要自己再研究)
3.使用UIView的animation接口实现(GIF需要整理出每张图片)
动画可以用UIImageView,把动画的每一帧做成图片,转换成UIImage保存在animationImages数组中,调用- (void)startAnimating;就能看到动画
4.把GIF的通过GIF的格式转换成每张图片,通过UIView的animation的接口实现(GIF的格式貌似还是有问题,有部分图片的背景有问题)
[cpp] view plaincopy
- - (NSMutableArray*)getImgArrayByName:(NSString*)name
- {
- //happybaby20
- NSURL *threeUrl =[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"crad"
- ofType:@"gif"]];
- NSData* data = [[NSData alloc]initWithContentsOfURL:threeUrl];
- NSMutableArray* array = nil;
- // long word = ::SizeofResource(handle,hrsrc);
- // char* lpBy = (char*)LoadResource(handle,hrsrc);
- DWORD word = data.length;
- BYTE* lpBy = (BYTE*)data.bytes;
- //每张图保存的指针 需要释放
- BYTE* pByte[100] = {0};
- //每张图的大小
- DWORD nu[100] = {0};
- //图片数量
- int num = 0;
- DWORD firstLocation = 0;
- for(DWORD j=0;j<word;j++)
- {
- if(lpBy[j]==0x2c)
- {
- if(lpBy[j-1]==0x00)
- {
- if(num==0)
- {
- firstLocation = j;
- }
- if (num== 10)
- {
- int sdf=nu[num];
- int sdfadf=0;
- }
- PGifImage nowImage = (PGifImage)&lpBy[j+1];
- if(nowImage->Flag.a==0)
- {
- DWORD number = 1+sizeof(GifImage);
- while(lpBy[j+number]!=0)
- {
- number = number+(DWORD)lpBy[j+number]+1;
- }
- number++;
- pByte[num] = new BYTE[number];
- memset(pByte[num],0,number);
- for(DWORD n=0;n<number;n++)
- {
- *(BYTE*)(pByte[num]+n) = lpBy[j+n];
- }
- nu[num] = number;
- j = j+number-1;
- num++;
- }
- else
- {
- //int number = 1+ sizeof(GifImage) + 3*(int)floor(pow(2.0f,nowImage->Flag.d));
- DWORD number = 1+sizeof(GifImage)+1+3*(int)floor(pow(2.0f,nowImage->Flag.d));
- while(lpBy[j+number] != 0)
- {
- number = number+lpBy[j+number];
- }
- pByte[num] = new BYTE[number];
- memset(pByte[num],0,number);
- for(int n=0;n<number;n++)
- {
- *(BYTE*)(pByte[num]+n) = lpBy[j+n];
- }
- nu[num] = number;
- j = j+number-1;
- num++;
- }
- }
- }
- }
- NSArray *userPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentDirectory = [userPaths objectAtIndex:0];
- //数量上
- if (num>0)
- {
- array = [[NSMutableArray alloc] initWithCapacity:num];
- }
- for (int k=0; k<num; k++)
- {
- for(DWORD n=0;n<nu[k];n++)
- {
- lpBy[firstLocation+n] = *(BYTE*)(pByte[k]+n);
- }
- NSData* imgbuf = [[NSData alloc] initWithBytes:lpBy length:nu[k] + firstLocation];
- if (imgbuf)
- {
- UIImage* img = [[UIImage alloc]initWithData:imgbuf];
- NSData* imgdd = UIImagePNGRepresentation(img);
- [imgdd writeToFile:[NSString stringWithFormat:@"%@/sdf%d.png",documentDirectory,k] atomically:NO];
- if (img)
- {
- [array addObject:img];
- }
- [img release];
- }
- [imgbuf release];
- delete pByte[k];
- pByte[k] = NULL;
- }
- return array;
- }
5.QuartzCore播放 比较完美的方案
[cpp] view plaincopy
- #import <UIKit/UIKit.h>
- #import <ImageIO/ImageIO.h>
- #import <MobileCoreServices/MobileCoreServices.h>
- @interface GifView : UIView {
- CGImageSourceRef gif;
- NSDictionary *gifProperties;
- size_t index;
- size_t count;
- NSTimer *timer;
- }
- - (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath;
- @end
.m
[cpp] view plaincopy
- #import "GifView.h"
- #import <QuartzCore/QuartzCore.h>
- @implementation GifView
- - (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath{
- self = [super initWithFrame:frame];
- if (self) {
- gifProperties = [[NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]
- forKey:(NSString *)kCGImagePropertyGIFDictionary] retain];
- gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:_filePath], (CFDictionaryRef)gifProperties);
- count =CGImageSourceGetCount(gif);
- timer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(play) userInfo:nil repeats:YES];
- [timer fire];
- }
- return self;
- }
- -(void)play
- {
- index ++;
- index = index%count;
- CGImageRef ref = CGImageSourceCreateImageAtIndex(gif, index, (CFDictionaryRef)gifProperties);
- self.layer.contents = (id)ref;
- }
- -(void)removeFromSuperview
- {
- NSLog(@"removeFromSuperview");
- [timer invalidate];
- timer = nil;
- [super removeFromSuperview];
- }
- - (void)dealloc {
- NSLog(@"dealloc");
- CFRelease(gif);
- [gifProperties release];
- [super dealloc];
- }
- @end
DEMO
[cpp] view plaincopy
- GifView *gifview = [[GifView alloc] initWithFrame:CGRectMake(0, 0, 200, 200) filePath:[[NSBundle mainBundle] pathForResource:@"test.gif" ofType:nil]];
- [self.view addSubview:gifview];
发表评论
-
ios 声音合成
2013-08-18 13:20 1242http://stackoverflow.com/ques ... -
__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用 20 三
2012-12-24 01:41 1649使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用 ... -
CAAnimation
2012-12-23 01:09 2307CAAnimation采用了CAMediaTi ... -
UIViewAnimation动画与Core Animation的CATransition类动画
2012-12-23 01:06 2702使用UIView类函数实现://U ... -
GCD实战2:资源竞争
2012-12-23 01:04 1556转自http://www.dreamingwish.co ... -
GCD实战一:使用串行队列实现简单的预加载
2012-12-22 17:10 2828转自 http://www.dreamingwish.c ... -
GCD介绍(四): 完结
2012-12-22 17:08 1334转自 http://www.dreamingwish.c ... -
GCD介绍(三): Dispatch Sources
2012-12-22 17:07 1603转自 http://www.dreamingwish.com/ ... -
GCD介绍(二): 多核心的性能
2012-12-22 17:05 1156转自http://www.dreamingwish.co ... -
基本概念和Dispatch Queue
2012-12-22 17:03 1321转自 http://www.dreamingwish.c ... -
Best Audio Format for iPhone Audio Programming
2012-12-19 16:26 2510I had never done audio p ... -
LAME 是一个开源的MP3解码编码工具
2012-12-19 13:09 8505MP3 Encoding * 编码MP3文件必须按如下 ... -
sqlite3中的数据类型
2012-12-10 21:37 1274(转)http://www.cnblogs.com/kfqco ... -
ios随机数,and()、random()、arc4random()
2012-11-15 11:06 4696原文:http://bj007.blog.51cto.c ... -
在新线程中使用NSTimer
2012-10-11 18:21 1556转自 http://blog.csdn.net/sjzs ... -
Creating an iPhone Daemon – Part 5
2012-09-02 15:29 1509Creating an iPhone Daemon – ... -
Creating an iPhone Daemon – Part 4
2012-09-02 15:28 1384Creating an iPhone Daemon – ... -
Creating an iPhone Daemon – Part 3
2012-09-02 15:25 1480This is part three of the bl ... -
Creating an iPhone Daemon – Part 2
2012-09-02 15:24 1226Here is part two of the blog ... -
Creating an iPhone Daemon – Part 1
2012-09-02 15:23 1136So I thought I would start t ...
相关推荐
iPhone 通过 OpenGL es 播放 GIF 动画图片, 请欣赏, 请欣赏, 请欣赏, 请欣赏
“美图GIF-效果最好的GIF相机”是一款简单易用的GIF制作软件,可以拍摄超好玩的...【美图GIF iPhone版 1.2.6 更新信息】 1、新增“伦敦奥运”场景特效,运动卖萌两不误! 2、新增“画中画”场景特效,留住经典瞬间!
使用openGL编写的实现png合成gif动画
Object-c iphone 可以在View上产生动画, 下载解压后,运行在模拟器里,可以产生动画效果, 在View上绘一个ImageView一样,但可以实现动画效果
该Demo能够使用Object-c来生成GIF动画文件,并且生成的动画文件能够播放!代码不多但是效率很高 生成的GIF文件在Docment文件下,可以去看下 这个Demo可以根据各位的需求修改
显示gif图片。ios本身的UIImageView不支持gif图片,这个例子较好地解决了在ios中显示gif图片的问题。 注意:请在Mac下解压使用
Gif动画录制,鲜活再现 支持视频播放,同时加入Gif动画录制功能! 奇闻趣事轻松记录,精彩瞬间不再错过,让表达更给力。 个性滤镜,多图上传 精心挑选多款滤镜,总有一款适合你,让照片更加动人! 同时支持多图...
5、手摇拼图、自由拼图、图片拼接、图中拼图等多种拼图方式满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 6、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博及POCO微博,内置@和#功能让分享...
5、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 6、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博及POCO微博,内置@和#功能让分享...
6、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册...
5、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 6、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博、POCO微博、人人网、QQ空间、...
支持查看原图、GIF动画、视频、音频,查看好友微博更新及分组微博筛选; 分享新鲜事儿 可以快速的分享文字、图片和地址位置信息,10种精美照片滤镜供你选择; 私信聊天 支持发送语音、表情、图片及位置信息,...
6、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册...
6、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册...
本代码包含对gridview的常见操作长按出现删除按钮、能被删除图标抖动、系统图标不抖动、添加gif动态图片效果
模仿iPhone本地通知,自定义写了一个本地通知动画
6、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 7、网络备份云相册:内置网络备份功能,可将图片直接导入POCO图片社区提供的免费网络云相册...
● iPhone版上线一周内,相继荣登大陆/港澳台/新马泰等华语国家及地区free apps排行榜第一!成为苹果商店最热门的摄影类APP之一! 屡次成为苹果商店热门产品推荐。 POCO相机,功能强大使用简单且尊重摄影人的拍摄...
● iPhone版上线一周内,相继荣登大陆/港澳台/新马泰等华语国家及地区free apps排行榜第一!成为苹果商店最热门的摄影类APP之一! 屡次成为苹果商店热门产品推荐。 POCO相机,功能强大使用简单且尊重摄影人的拍摄...
● iPhone版上线一周内,相继荣登大陆/港澳台/新马泰等华语国家及地区free apps排行榜第一!成为苹果商店最热门的摄影类APP之一! 屡次成为苹果商店热门产品推荐。 POCO相机,功能强大使用简单且尊重摄影人的拍摄...