云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名交易_python阿里云_企业级

小七 141 0

在Android上构建图像故事板应用程序:教程

目前,全球大约有20亿人拥有智能手机,智能手机还配备有摄像头,能够捕捉到5年前甚至无法想象的色调丰富和质量的照片和视频。直到最近,这些相机主要表现为光学传感器,捕捉决定图像像素的光线。然而,下一代相机可以将应用于图像语义内容的硬件和计算机视觉算法融合在一起,从而产生创造性的移动照片和视频应用程序。输入2月初,谷歌在其AppsPriment计划中推出了三款移动应用程序,这些应用程序利用了诸如对象识别、人物分割等技术,图像编解码,获取用户响应。本教程重点介绍Android上的Storyboard应用程序,在这个应用程序中,您可以将视频转换为单页漫画布局,全部都在设备上进行。当你选择了一段视频并将其加载到故事板中后,应用程序会选择有趣的视频帧,压缩JPEG,并将其显示在屏幕上。您将学习如何使用Cloudinary在Android上复制这些功能,Cloudinary是一个基于云的端到端解决方案,用于存储、优化和交付图像和视频。令人印象深刻的是,使用Cloudinary,您可以转换图像和视频,也就是说,调整大小并添加许多效果他们。所以,简单回顾一下,本教程将引导您完成将视频上载到Cloudinary的过程,在此过程中,您可以从上载的文件中生成并传递任何帧的图像缩略图,在屏幕上渲染而不必压缩视频。此外,您还将为生成的图像缩略图添加效果,并通过唯一的url对它们进行实时处理。网络研讨会作为参考,请参阅Cloudinary关于在计算机上或移动。用于有关图像优化及其背景概念的详细信息,请阅读本文后期演示源代码这个短片展示了故事板是如何工作的。要在Android设备上运行,请将该应用程序下载到您的Google上开车。同时在构建应用程序时,您可能需要查看源代码规范要求先决条件,建立一个云数据库账户。还有,下载Android Studio(或您选择的IDE)和两个第三方库:安卓工作室云数据库Android SDK用于异步图像加载的毕加索首先,打开Android工作室并创建Android Studio项目:。选择"文件">"新建">"新建"项目。复制要在**创建Android项目**对话框中创建剪贴簿,请填写**应用程序名称**、**项目位置**和**包名称**字段。单击**下一步**。![命名应用程序并单击"下一步"](https://cloudinary-res.cloudinary.com/image/upload/w_600,c_fill/dpr_auto/命名_应用程序.jpg)在Targetandroid设备对话框中的selecttheformfactors和minimum SDK下,选择api17:android4.2(jellybean)。点击下一步。选择目标设备和API水平。英寸在"将活动添加到移动设备"对话框中,选择"不添加活动"。点击下一个。收到到剪贴板![选择空活动并单击"下一步"](https://cloudinary-res.cloudinary.com/image/upload/w_600,c_fill/dpr_auto/Android_活动.jpg)在"配置活动"对话框中,保持默认设置不变。点击完成。收到到剪贴板![保留默认值并单击"完成"](https://cloudinary-res.cloudinary.com/image/upload/w_600,自动/配置_活动.jpg)dependencies的设置下一步,添加下面的代码以在生成.gradle应用程序的文件模块:复制到剪贴板实施组:'com.cloudinary网站',名称:'cloudinary android',版本:'1.22.0'实施'毕加索网站:毕加索:2.5.2'单击"同步到"安装。之后,打开AndroidManifest.xml在应用程序下归档并添加云数据库配置标记:复制到剪贴板myCloudName是您控制台上的Cloudinary名称。请注意,Internet权限已在清单.App布局现在使用以下用户界面元素定义应用程序布局:显示上载过程进度的栏触发视频上传的按钮从Cloudinary呈现图像缩略图的三个ImageView对象活动_主.xml查看活动主文件下一步,初始化主活动.java文件以便以后可以参考。编辑文件,使其看起来像收件人:抄送至剪贴板包裹com.example.ekene网站图像板云数据库;导入。。。。公共类MainActivity扩展了AppCompatActivity实现View.OnClickListener{私人按钮上传btn;私有ProgressBar ProgressBar;private int SELECT_VIDEO=2;私有图像视图img1、img2、img3;@覆盖受保护的void onCreate(Bundle savedInstanceState){超级创建(保存在标准状态);设置内容视图(R。layout.activity_main布局);img1=查找视图ID(R。id.img1);图2。id.img2);img3=查找视图ID(R。id.img3);progressBar=findViewById(R。进度条);uploadBtn=findViewById(R。id.uploadBtn);}接下来,添加下面的代码来设置Upload按钮,单击该按钮,将启动库,您可以在其中选择要上载的视频复制到剪贴板uploadBtn.setOnClickListener(新的View.OnClickListener() {@覆盖public void onClick(查看视图){pickVideoFromGallery();}私有void pickVideoFromGallery(){Intent GalleryIntent=新建Intent();厨房内容.setType("视频/*");厨房内容.setAction(Intent.ACTION\u GET_内容);startActivityForResult公司(Intent.createChooser(GlleryIntent公司,"选择视频"),选择视频;}});随后,一旦您选择了一个视频,Cloudinary就会调用onActivityResult方法,这又会触发一个上传到Cloudinary的操作。为了方便上载,请创建一个UploadRequest方法,并在onActivityResult方法中进行分派,如下一节所述。Cloudinary UploadsColoudinary提供两种类型的上载:签名上载,这需要来自后端的身份验证签名。对于这些上传,您的图像和视频将使用控制台中的API和密钥进行签名。因为这些签名在客户端是有风险的,很容易被反编译,所以后端对于安全性来说是必需的。未签名上载,不需要签名,因此安全性不如签名上载。这些上载由上载预设控制,上载预设定义应用于随预设上载的图像的选项。在这里,您可以通过在控制台上启用未签名上载来设置它们:选择仪表板上的设置,选择上载选项卡,向下滚动到上载预设,然后启用未签名。然后Cloudinary生成一个以随机字符串作为其名称的预置。把名字抄下来留着用待会儿。下一个,通过首先初始化MainActivity类中的Cloudinary MediaManager类onCreate方法,启用将所选视频上载到Cloudinary,如图所示此处:抄送至剪贴板包裹com.example.ekene网站图像板云数据库;导入。。。。公共类MainActivity扩展了AppCompatActivity实现View.OnClickListener{@覆盖受保护的void onCreate(Bundle savedInstanceState){超级创建(保存在标准状态);设置内容视图(R。layout.activity_main布局);//初始化MediaManager媒体管理器.init(本);}随后,在MainActivity中调用onActivityResult()方法并设置它向上。就像背景,以下是该应用程序迄今为止在MainActivity中采用的方法及其与onActivityResult的关系:onCreate-在应用程序启动时变为活动状态。前面使用的XML文件是活动的默认布局。您还向按钮添加了一个侦听器,单击该按钮后,应用程序将调用第二个方法pickVideoFromGallery(见下文)。pickVideoFromGallery-启动用户的库以进行视频选择。此过程在SELECT_VIDEO变量中生成一个唯一的请求代码。因为响应跟在视频部分之后,startActivityForResult()方法在onActivityForResult()方法上呈现响应。如果选择成功,响应也会成功,selectedVideo变量将保存所选视频的URI以供上载。最后,Culinary调用onActivityForResult()方法(见下文)。如果选择失败,则过程结束。onActivityForResult()—检查startActivityForResult()的响应是否成功。在视频选择中,resultCode等于Activity.RESULT_正常否则,将Activity.RESULT_已取消. 如果成功,将使用MediaManager向Cloudinary发出上载请求,如下所示:复制到剪贴板@覆盖受保护的void onActivityResult(int requestCode,int resultCode,final Intent data){如果(请求代码==选择视频和结果代码==结果确定){Uri选择的视频=数据获取数据();//...}}现在通过向onActivityResult添加MediaManager来创建上载请求,并使用以下五种方法在Cloudinary中构建UploadRequest:upload()—接收所选视频的uri以进行上载。unsigned()–接受控制台中的预设名称。option()–接受上传的资源类型。复制到剪贴板媒体管理器.get().upload(所选视频).unsigned("预设名称").option("资源类型","视频").callback(…)//...}callback()—接受一个新的UploadCallback方法,该方法实现了跟踪上载进度的其他几个回调方法。onStart()-定义