Tag: gif

我最喜欢的GIF应用功能:循环(iOS)

Universal Everything于2013年发布了Loop,它具有手绘UI和出色的用于直接动画的概念(更自然的动画风格,与逐位动画相反)。 此后,工作室以最小的,几乎是复古的方式重新设计了UI,并且还发布/更新了类似概念的其他应用程序,例如“绘制在一起”和“ 1000手”。 Loop是主要免费的应用程序。 *在Loop中使用绿色需要在应用内购买$ 1 使用该应用程序绘制时, 我最喜欢的功能是笔触根据您绘制的速度而改变厚度。 完成5-48帧工程图后,您可以将动画作为GIF动画格式导出到“相机胶卷”(不幸的是,截至本文撰写时,无法在iOS的“相机胶卷”中本地查看),然后将GIF上传到UE的收藏夹中循环,或通过电子邮件发送出去。 还值得注意的是,当您开始创建新框架(而不是复制框架)时,应用程序会先为框架提供洋葱皮图像,以帮助注册。 我真正喜欢Loop的另一件事是,它鼓励同样的好奇心和游戏性,从而首先吸引像我这样的人进入动画。 对于我来说,动画和电影的幻觉总会有神奇的东西。 Loop使任何人都能够在几乎没有入门或指导的情况下运用视觉持久性这一事实是一个了不起的成就。

我最喜欢的GIF应用功能:Vhoto(iOS)

Vhoto是应用程序中的一颗明珠,原因有很多,但我最喜欢的功能是它声称如何拉动某些静止图像或“亮点” 从您的视频中。 尽管这不是直接创建GIF的功能,但它确实是一项有用的功能,并且可以很好地在我测试过的视频中使用。 这个应用程式的另一个我最喜欢的地方是,它会自动产生几种不同的媒体,从所谓的“顶级GIF”到更快,更慢的视频版本,当然,该应用程序最初的承诺是找到大量静止图像。视频中的精彩片段。 由于野外的GIF类型动画很少采用GIF文件格式(例如Instagram),因此我感谢Vhoto允许将您的作品既作为视频文件又作为GIF文件保存到相机胶卷中。 但是,当您另存为视频时,您显然会丢失可能已进行的任何播放调整…即,您刚刚制作的超级慢动作剪辑只能在慢动作中以GIF格式查看。 视频文件将仅以捕获时的速度播放。 想到任何GIF创建工具都不允许您另存为视频似乎是幼稚的(或者比其时间😉早了很多),而在最坏的情况下彻头彻尾地考虑不足。 想到任何GIF创建工具都不允许您另存为视频似乎是幼稚的(或者比其时间😉早了很多),而在最坏的情况下彻头彻尾地考虑不足。 这种魔术 -策划大量您拥有的图像和视频-是许多服务的目标(例如Google Photos,Polarr的Picky应用,Magisto和Picjoy)。 但是,Vhoto的关注点仅集中在单个视频剪辑的精选集上,这一事实使该应用程序变得更加有用。 因此,只要Vhoto仍可在最新版本的iOS上运行,它将在我的主屏幕上始终占有特殊的位置。

让我们结合以上两个定义,并设想将其应用于编程。

静态定义:“缺乏动作,行动或变化,尤其是在无可否认或无趣的竞争中。 图书馆的定义:“一栋建筑物或也包含供人们阅读,借阅或参考的书籍,期刊和电影的收藏” 让我们结合以上两个定义,并设想将其应用于编程。 你在想什么? 也许您认为静态库是一个包含无法移动的信息的东西,或者您就像其他文件一样,认为它只是一个由一个和一个零组成的文件。 无论您在想什么,您都可能正确或接近正确答案。 库和其他文件之间的主要区别是您无法执行库。 相比之下,当您通过任务管理器查看应用程序时,它们正在执行。 这些应用程序可能是由于您的计算机中的库 但是它们如何工作? 要在Windows上识别静态文件,扩展名是* .LIB,在其他操作系统上,扩展名是* .A。 我们的静态库将在编译期间使用。 换句话说,在编译过程中,我们使用知道如何打印内容,函数和代码并将其移至应用程序的库。 您可能会认为它类似于复制和粘贴,并且您非常正确。 建立交流图书馆 首先让我们创建一个头文件 /* Filename: lib_mylib.h */ void fun( void ); 编译库文件。 gcc -c lib_mylib.c -o lib_mylib.o 创建静态库。 此步骤是将多个目标文件捆绑在一个静态库中(有关详细信息,请参见ar)。 此步骤的输出是静态库。 ar -rc lib_mylib.a lib_mylib.o 瞧! 现在我们的静态库可以使用了。 现在我们可以将lib_hello_static.a复制到其他地方以使用它

如何在Swift中将GIF添加到UIImageViews

我正在制作一个包含gif的漂亮的小应用程序。 我使用了SwiftGif(一个很酷的UIImage扩展)来协助我完成这项任务。 按着这些次序: 如果您没有安装CocoaPods,请安装CocoaPods。 如果您的Xcode项目中还没有Podfile,请创建一个。 您可以通过在终端中键入“ pod init”来创建一个。 您会注意到,我的应用程序名称为“ Should_I_App”。 3.使用文本编辑器打开Podfile(我使用Sublime,它比TextEditor更好)。 如果使用Sublime,则可以键入“ subl Podfile”以在Sublime中打开Podfile。 4.在Podfile的“目标”下添加“ pod’SwiftGifOrigin’,’〜> 1.6.1’” 。 保存并关闭。 5.返回终端,输入“ pod install”,然后按回车键。 您应该得到这样的内容: 6.确保现在关闭Xcode项目。 7.通过终端,打开您的项目文件夹并打开.xcworkspace文件。 该文件是新文件; 它是在您添加任何广告连播时创建的。 8.在打开的.xcworkspace项目中,按⌘B (构建项目)。 这样就实现了项目中的Pod。 9.在ViewController.swift文件中,通过在该文件顶部键入“ import SwiftGifOrigin”来导入SwiftGif扩展名。 10.现在,在我的应用程序中,我正在使用一个生成随机名人gif的API。 在开始编写代码之前,我去了Main.Storyboard并为UIImageView(gifImageView)创建了一个插座来显示我的gif。 11.现在,我的gifImageView有一个@IBOutlet(第17行)。 凉! 在编码部分上……虽然API返回gif作为URL,所以首先我必须将URL转换为字符串(第44行)。 第二,在完成关闭时,我将gifURLString分配给gif(第27行)。 第三,我将gifImageView设置为新的gif(第29行)。 生成并运行。 魔法! 资源: SwiftGif UIImage扩展

iOS中的GIF终极指南。

动画内容的另一面。 GIF大约在1980年代后期。 只是在最近,它们才被虚拟吹灭。 从博客到meme网站,您可以在任何地方看到它们。 在图片上使用GIF的原因很多,例如,它们通常不像视频那样沉重,可以恰当地显示您的观点并且可以在任何地方兼容。 如果一张图片可以说一千个单词,请想象一个GIF可以有多少个。 存在对在iOS中播放GIF的本机支持,但乏味。 您需要使用Apple的ImageIO框架加载GIF的每个图像,并自定义theAnimatedImages , animationDuration和animationRepeatCount API。 Flipboard实现了一种在其应用程序内播放GIF的解决方案。 我们将使用他们的图书馆,名为 FLAnimatedImage在我们漂亮的小应用程序中复制相同内容。 按着这些次序: 安装Cocoapods。 如果尚未安装,请按照此处的步骤操作。 创建一个新的Xcode项目。 我将其命名为GIFTest。 FLAnimatedImage有一个cocoapod可用。 如果您不知道什么是Cocoapods或它如何工作,请查看此链接。 3.现在,打开终端。 将目录更改为保存iOS项目的位置。 通过键入pod init初始化我们项目的Cocoapods。 接下来,通过键入open podfile 。 我们将添加吊舱。 添加线pod ‘FLAnimatedImage’ 4.现在,我们将进行pod install以将pod install到我们的项目中。 我们将关闭Xcode的所有会话并打开GIFTest.xcworkspace项目。 那是带有白色图标的Xcode项目。 xcworkspace项目有我们的原始项目,还有一个带有pod的xcode项目。 5.太好了! 完成所有设置后,我们将三个UIImageViews添加到我们的项目中。 我们将其类更改为FLAnimatedView。 6.导入FLAnimatedImageView并为所有三个图像创建出口。 7.现在,我们将在本地加载两个GIF,并从互联网加载一个GIF。 要在本地加载GIF,请将它们移到您的项目中,然后选中“如果需要,复制项目”。 8.现在要在本地加载GIF,请按照以下步骤操作。 因此,只要提供了GIF,就将帧解压缩为位图格式(CPU密集型),并将其填充到缓存中。 编码的位图将一直保留到对象的生存期。 它试图有效地选择缓存大小,即,如果GIF太小,它将帧保留在缓存中,否则,它仅缓冲足够的帧以进行实时回放。 当系统发出内存警告时,所有帧都将丢失,并且过程将退回到按需解码。 因此,今天,我们学习了如何使用Cocoapods,如何在项目中对其进行初始化,安装了Flipboard的开源库FLAnimatedImage并将其用于显示项目内的GIF和来自互联网的GIF。 有关更多参考,请在此处查看库。 有关完整的源代码,请参阅 我的Github存储库。 如有任何问题和建议,请在下面发表评论!

使用Angular在iPhone iOS 10上自动播放内联视频

从iOS 10开始,移动版(iPhone和iPad)上的Safari开始允许开发人员以内联方式自动播放视频,前提是您要播放的视频满足某些条件。 在此之前,您的视频不会自动内联播放,并且在播放时只能全屏播放。 进行这些更改是为了防止“具有声音自动播放功能的网站”,如果您曾经浏览过手机上的某个站点并且开始播放烦人的视频广告,则可能是由于内联视频自动播放功能引起的,但还有其他原因内联视频HTML属性的合法使用。 视频作为GIF动画 我们都同意,GIF很酷,但是在幕后它们却是巨大的对象,就性能而言,GIF绝对不是网络上的最佳格式。 GIF将比例缩放到几兆字节的情况并不罕见,具体取决于质量,帧速率和长度。 如果您想提高网站的加载性能并帮助用户减少数据使用量,那么动画GIF就是与该目标不兼容的。 解决此问题的一种方法是将这些巨大的文件转换为压缩的精益视频,这样既可以保持较高的分辨率,又可以为用户节省大量数据。 自动播放静音 简而言之,视频要在移动浏览器中内联播放,需要将以下关键属性添加到video标签中(取决于移动平台)。 自动播放 静音 内线 Chrome For Android仅需要前两个,但是如果您使用的是Safari,则需要添加iOS 10中引入的playsinline属性。跨浏览器兼容的代码如下所示: 在最新的浏览器和平台上,这将使您的视频内联自动播放,并具有loop属性,使您的视频实质上充当GIF。 它不起作用! 我在上一段的最后一句话中强调了大部分内容,因为您肯定会遇到无法使用的情况。 我的具体案例是运行自定义WebView渲染Angular应用的iOS 10和11 iPhone。 根据iOS autoplay技术指南中的规定,该应用程序中的视频标签会在用户与页面互动后立即尊重autoplay属性,但只会忽略playsinline属性并全屏播放视频。 最终,它需要花很多时间进行Google搜寻和反复试验,但如果遇到相同的错误,请检查以下内容以使其正常运行: 如果您要定位的是iOS 11,请确保设备未在低功耗模式下运行。如果您使用的是Android版Chrome浏览器,则数据保护程序模式也会阻止自动播放。 在您的WebView中,确保为WebView设置了allowsInlineMediaPlayback配置。 我用了: webView.configuration.allowsInlineMediaPlayback = true 如果 #available ( iOS 10.0,*){ webConfiguration.mediaTypesRequiringUserActionForPlayback = [] } 其他 { //早期版本的后备 webConfiguration.mediaPlaybackRequiresUserAction = false } 安装iPhone-Inline-Video:如果您想支持iOS的早期版本(8和/或9)甚至是iOS 10的嵌入式视频播放,正如我发现的那样,此库“在iOS 8和iOS上启用iOS 10的playsinline属性9(几乎是polyfill)”。 静音属性问题 […]

使用SLRequestreplaceUIActivityViewController twitter发布的操作

我试图分享一个animationGIF,但默认的UIActivityViewController Twitter共享不支持它,它将“缩小”它仍然JPG,我不得不使用SLRequest它在本文中的教导。 缺点是没有预览份额表,用户不能再input自己的信息。 不过,我看到了用户点击Twitter分享表中的“共享”后,似乎使用自定义操作的SteppyPants ,他们如何做到这一点? 换句话说,如何将UIActivityViewController的twitter共享操作replace为包含SLRequest的自定义操作。 我试过的东西: UIActivityItemProvider并检查UIActivityTypePostToTwitter,但是在用户点击twitter之后并在编辑文本之前运行 在UIActivityViewController的completionWithItemsHandler删除刚才twitted后(与仍然GIF),并再次发布与SLRequest,但不太确定,如果我可以删除旧的post,而且它为用户消耗networking带宽 SLComposeViewController,不支持animationGIF上传,不支持自定义共享操作 PS我是iOS的新手

将URL中的GIF图像保存到相机胶卷

我正在尝试使用以下代码将URL从URL保存到相机胶卷: var image = UIImage(data: NSData(contentsOfURL: self.imageView.sd_imageURL())!) UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 但保存后,GIF成为一个静止的图像,任何人都可以帮助我? 谢谢!

如何使用PHPhotoLibrary保存GIF?

我有一个应用程序,显示来自互联网的GIF,我想添加保存GIF到相机胶卷的能力。 我正在使用PHPhotoLibrary ,并试图用我在几个SO问题中看到的方法将它保存到相机胶卷上,例如: func saveToCameraRoll(imageUrl: String) { PHPhotoLibrary.shared().performChanges({ _ in let createRequest = PHAssetChangeRequest.creationRequestForAssetFromImage( atFileURL: URL(string: imageUrl)!) }) { success, error in guard success else { log.debug("failed to save gif \(error)") return } log.debug("successfully saved gif") } } 但是,这让我failed to save gif Optional(Error Domain=NSCocoaErrorDomain Code=-1 "(null)") ,这似乎是由于.gif文件格式,但我找不到另一个如何保存到相机的例子滚动,而不使用已弃用的ALAssetsLibrary.writeImageDataToSavedPhotosAlbum 。 我尝试从Safari中保存一个GIF,这工作:发送给其他人的GIFanimation,所以我知道我想要做什么是可能的,但有人可以指向我的PHPhotoLibrary API的正确部分? 编辑:基于这个答案类似的问题,我想出了如何做我想要的Data和PHAssetCreationRequest如下: class func saveToCameraRoll(imageUrl: String) […]

使用FLAnimatedImage的示例或演示SWIFT代码

我正在尝试将FLAnimatedImage整合到基于Swift的iOS应用程序中,以显示animationGIF。 我开始导入FLAnimatedImage.h和FLAnimatedImageView.m文件,并创build了Bridging-Header.h 。 我试图用这个代码加载到我的ImageView的Gif: @IBOutlet weak var animatedImageView: FLAnimatedImageView! = animatedImageView.animatedImage = FLAnimatedImage(animatedGIFData: NSData(contentsOfFile: "chicken.gif")) ` 但它在应用程序启动时失败,出现以下错误代码: exception'NSInvalidArgumentException',原因:' – [UIImageView setAnimatedImage:]:无法识别的select发送到实例0x78e3c820' 有关如何解决上述错误的任何build议? 谢谢你的帮助。