- 浏览: 1334408 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (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 1292http://stackoverflow.com/ques ... -
__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用 20 三
2012-12-24 01:41 1717使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用 ... -
CAAnimation
2012-12-23 01:09 2350CAAnimation采用了CAMediaTi ... -
UIViewAnimation动画与Core Animation的CATransition类动画
2012-12-23 01:06 2750使用UIView类函数实现://U ... -
GCD实战2:资源竞争
2012-12-23 01:04 1597转自http://www.dreamingwish.co ... -
GCD实战一:使用串行队列实现简单的预加载
2012-12-22 17:10 2911转自 http://www.dreamingwish.c ... -
GCD介绍(四): 完结
2012-12-22 17:08 1406转自 http://www.dreamingwish.c ... -
GCD介绍(三): Dispatch Sources
2012-12-22 17:07 1657转自 http://www.dreamingwish.com/ ... -
GCD介绍(二): 多核心的性能
2012-12-22 17:05 1208转自http://www.dreamingwish.co ... -
基本概念和Dispatch Queue
2012-12-22 17:03 1386转自 http://www.dreamingwish.c ... -
Best Audio Format for iPhone Audio Programming
2012-12-19 16:26 2563I had never done audio p ... -
LAME 是一个开源的MP3解码编码工具
2012-12-19 13:09 8611MP3 Encoding * 编码MP3文件必须按如下 ... -
sqlite3中的数据类型
2012-12-10 21:37 1339(转)http://www.cnblogs.com/kfqco ... -
ios随机数,and()、random()、arc4random()
2012-11-15 11:06 4729原文:http://bj007.blog.51cto.c ... -
在新线程中使用NSTimer
2012-10-11 18:21 1590转自 http://blog.csdn.net/sjzs ... -
Creating an iPhone Daemon – Part 5
2012-09-02 15:29 1542Creating an iPhone Daemon – ... -
Creating an iPhone Daemon – Part 4
2012-09-02 15:28 1410Creating an iPhone Daemon – ... -
Creating an iPhone Daemon – Part 3
2012-09-02 15:25 1509This is part three of the bl ... -
Creating an iPhone Daemon – Part 2
2012-09-02 15:24 1262Here is part two of the blog ... -
Creating an iPhone Daemon – Part 1
2012-09-02 15:23 1167So I thought I would start t ...
相关推荐
"iPhone_GIF"这个主题聚焦于如何在iPhone应用中利用OpenGL ES技术来播放GIF动画图片。OpenGL ES(OpenGL for Embedded Systems)是一种轻量级的图形库,广泛应用于移动设备,如iPhone,用于实现高质量的2D和3D图形...
“美图GIF-效果最好的GIF相机”是一款简单易用的GIF制作软件,可以拍摄超好玩的...【美图GIF iPhone版 1.2.6 更新信息】 1、新增“伦敦奥运”场景特效,运动卖萌两不误! 2、新增“画中画”场景特效,留住经典瞬间!
GIF是一种支持动画的图像格式,通过将一系列静态帧组合在一起,形成连续播放的效果。每个帧可以有各自的延迟时间,这决定了图像在屏幕上的显示时长。在OpenGLES中,我们将通过加载这些静态PNG帧,然后按照指定的顺序...
在iOS开发中,UIImageView通常用于显示静态图片,但通过特定的技术和方法,我们也能让它播放GIF动画。这种技术通常涉及到解析GIF文件格式,提取其帧数据,并以适当的间隔逐帧显示,以模拟动画效果。 标签"Movie ...
使用OpenGL播放GIF涉及以下几个关键步骤: 1. **数据加载**:首先,你需要读取GIF文件的数据,解析其帧信息,包括每帧的图像数据、延迟时间和透明度信息。这通常需要使用第三方库,如libGIF或开源项目SDWebImage,...
在标题"(0118)-iOS/iPhone/iPAD/iPod源代码-图像(Image)-GIF Image View"中提到的问题,就是如何在iOS应用中实现GIF图片的播放功能。描述中指出,这个示例提供了一个解决方案,使得在iOS设备上可以良好地...
同时,这主要是一种娱乐方式,目的是为了让QQ好友看到你似乎是用iPhone在线,但实际操作可能因不同版本的QQ应用而略有差异。对于追求真实体验的用户,购买iPhone可能是更好的选择。在进行这类操作时,应尊重他人的...
在iOS开发中,使用Object-C实现GIF动画的生成与显示是一项常见的需求。GIF(Graphics Interchange Format)是一种支持动态图像的文件格式,广泛应用于社交媒体、网站和应用程序中。以下将详细介绍如何利用Object-C来...
这种灵活的工作方式在现代软件开发中非常常见,特别是在远程工作或分布式团队协作中。 【标签】:“学习资料”暗示了压缩包中的内容可能是教学材料,如教程、示例代码、学习笔记、问题解答等,这些对于初学者或有...
在iOS开发中,UIImageView是苹果提供的一个非常重要的UI组件,用于显示图像,无论是静态图片还是动态GIF。在本教程中,我们将深入探讨如何在iPhone应用中使用UIImageView进行图片的展示和基本操作。 首先,...
在iOS中,原生的UIImageView并不支持GIF的自动播放,因此我们需要自定义一个类来处理这个需求。`JSAnimatedImagesView`,正如文件名所示,是一个第三方库,由Javi Soto开发,它提供了对动态图像的支持。 实现`...
Gif动画录制,鲜活再现 支持视频播放,同时加入Gif动画录制功能! 奇闻趣事轻松记录,精彩瞬间不再错过,让表达更给力。 个性滤镜,多图上传 精心挑选多款滤镜,总有一款适合你,让照片更加动人! 同时支持多图...
在提供的0_13101149727kwn.gif文件中,可能展示了各种iPhone界面元素的示例或者具体的尺寸规格。通过分析这个文件,开发者和设计师可以更直观地理解这些规格在实际设计中的应用。 总之,理解并遵循iPhone界面元素的...
在iOS中,可以使用第三方库如FLAnimatedImage,它提供了高效的gif解析和播放功能,可以方便地在UIImageView中展示gif动态图片。 最后,关于“gridView”。在Android中,`GridView`是一种布局管理器,可以将数据集...
2. **提取并处理头像**:可以采用截图的方式,或者重新下载一个新的头像进行替换。 #### 图像处理步骤 1. **打开Photoshop**:启动图像编辑软件Photoshop,插入准备好的头像图片。 2. **添加iPhone图标**:选择之前...
"DIY.gif" 文件可能是教程或提示信息的动态图像,指导用户如何使用这个序列号查询工具,或者展示查询结果的示例。DIY,即“Do It Yourself”,意味着用户可以自行操作,无需专业知识。 "关于.txt" 文件通常包含软件...
2. PNG或GIF序列:用于制作动态效果的图像帧。 3. Xcode项目文件:可能包含了iOS应用的源代码,用于实现动态效果。 4. JSON或XML配置文件:可能存储了动画效果的参数和配置。 5. Audio文件:可能包含开机动画的音效...
5、手摇拼图、自由拼图、图片拼接、图中拼图等多种拼图方式满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 6、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博及POCO微博,内置@和#功能让分享...
这种自定义通知动画能够使应用程序的通知呈现方式更加个性化,提升用户体验。 首先,我们来看一下iPhone原生的本地通知。本地通知是iOS系统提供的一种机制,当应用不在前台运行时,仍可以向用户发送消息。这些通知...
5、多种拼图方式:手摇拼图、自由拼图、图片拼接、图中拼图等满足您对多图片处理的各类需求,让你的微博分享更有吸引力! 6、一键多平台分享:可将照片一键分享到新浪微博、腾讯微博及POCO微博,内置@和#功能让分享...