利用MediaCodec可以录制视频,可是可以将图片合成视频吗?之前使用ffmpeg来实现。...但是,ffmpeg却是c++写的,而且非常占用内存,虽然它是非常棒的音视频处理库,但是杀鸡焉用牛刀,所以今天就讲一下:如何利用Android API中的MediaCodec来实现图片合成视频 YUV...YUV格式的数据时,将对图片上的点进行采样存储。..._4); 其中out为视频输出文件。...这篇文章讲的是利用纯Android API实现的图片合成视频文件,其中我有查询到利用ffmpeg的,利用opencv/javacv的,但是这边文章介绍的方式没有引用第三方库,因此打包出来的apk文件肯定是很小的
在android 开发中,很多时候,我们会需要调用到用户本机的照片、视频或者是音乐让用户选择,来进行我们APP对应的操作。...//intent.setType(“audio/*”); //选择音频 10 11 //intent.setType(“video/*”); //选择视频...(mp4 3gp 是android支持的视频格式) 12 13 //intent.setType(“video/*;image/*”);//同时选择视频和图片 14...还一种方法是,默认的直接打开: startActivityForResult(photoPickerIntent,1); 这种方法有时候会显示不出来,原因是,程序的运行的时候,检测到本机有多个音乐或者图片的总体类型
最近公司有一个选择图库的需求,需要支持图片和视频,网上找了很多,基本是16,17年的代码,大部分也是转载的内容,因为之前做过自定义拍照和相册,以及使用gpuImage实现滤镜、贴纸等效果,所以决定自己动手撸一个...已经有一年多没有写Android代码了,主要现在做前端去了,写这篇博客的目的也是为了方便之后自己查找。下面是实现的Android图库的效果,基本上是抄的微信的,如下图。...核心的实现很简单,就是自己写一个线程,去扫描本地的MediaStore实体类中的图片和视频,为了提高扫描的性能,我们将扫描的线程扔到线程池中,可以详细阅读ImageLoadTask、MediaLoadTask
//选择图片 requestCode 返回的标识 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT...Intent.createChooser(intent, null); ((Activity) context).startActivityForResult(wrapperIntent, requestCode); //拍摄视频...MediaStore.EXTRA_DURATION_LIMIT, durationLimit); startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO); //视频...intent.setType(ContentType.AUDIO_AMR); //String AUDIO_AMR = "audio/amr"; intent.setClassName("com.android.soundrecorder...", "com.android.soundrecorder.SoundRecorder"); ((Activity) context).startActivityForResult(intent
--此处显示图片整体--> <ImageView android:id="@+id/imagel" android:layout_width="wrap_content..."/> 代码实现透明度改变: public class MainActivity extends AppCompatActivity { //定义一个访问图片的数组...int currentImg = 2 ; //定义图片初始透明度 private int alpha = 255 ; @Override protected...R.id.imagel); final ImageView imageView02 = (ImageView) findViewById(R.id.image2); //定义查看下一张图片的监听器.../获取第一个托片显示框中的位图 Bitmap bitmap = bitmapDrawable.getBitmap(); //bitmap图片实际大小与第一个
Android 图片裁剪 前言 正文 一、创建并配置项目 二、权限申请 三、获取图片Uri 四、图片裁剪 尾声 运行效果图 ?...前言 图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一个图片,然后再对这个图片进行压缩,最终返回结果图片。...嗯,图片显示出来了,图片的url也拿到了,下面该做这个图片的剪裁了。...四、图片裁剪 既然是调用Android系统的图片裁剪,那么自然也和打开系统相册差不多,依然是先创建一个请求码: /** * 图片剪裁请求码 */ public static...// 调用系统中自带的图片剪裁 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType
> <AbsoluteLayout android:id="@+id/root" xmlns:android="http://schemas.android.com/apk/res/android...="wrap_content" android:layout_x="20dp" android:layout_y="225dp" android:text..."/> Java代码 动态设置头像: //点击 切换图片 public class Home extends AppCompatActivity { private...LinearLayout mainLayout=null; private ImageView iv=null; //定义一个访问图片的数组 int[] images = new...int[]{//放置你的图片 R.drawable.gass, R.drawable.gonzhixiaochou }; //用于图片切换
title: 2016-5-5未命名文件 tags: UI适配,图片资源 grammar_cjkRuby: true --- 概述: 本文整理了Android开发中,图片资源的提供方式和使用方式...1.为什么提供不同设备配置的资源文件 除代码外,资源文件也是安卓程序中必不可少的部分,如图片、布局文件,甚至是音频、视频等原始多媒体文件。不同于代码文件的是,UI资源文件是和设备的显示器密切相关的。...在Android项目中,图片资源的组织,正是按照pixel density来进行不同屏幕的分组。...对应一个代码中用到的图片资源,Android系统会使用以下步骤来选择出最适合当前运行设备的图片资源文件进行显示: 系统寻找匹配当前屏幕像素密度的可用图片文件。...九宫格图片是一种可拉伸的位图,在作为其它View的背景显示时,Android系统会自动将它改变到一个合适的大小。
Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。...二、Android读取图片资源 Drawable目录 已将图片保存到drawable目录下,通过图片id获得Drawable或者Bitmap,此方式最常用。...肯定心里会想,放在哪一个都行,只要是在android中的res目录下的drawable中就行,系统会自己找到。...1)不同的layout Android手机屏幕大小不一,有480×320, 640×360, 800×480.怎样才能让App自动适应不同的屏幕呢?...加入这一行 android:screenOrientation="landscape" 其中(landscape是横向,portrait是纵向):
WebView控件是经常用到的,如果WebView中有选择图片这种操作,光是settings.setJavaScriptEnabled(true); 还是不够的,还需要重写WebChromeClient...return; mUploadMessage = uploadMsg; selectImage(); } // For Android...=data){ // 好像是android多媒体数据库的封装接口,具体的看Android文档 cursor = managedQuery(data.getData...; import android.graphics.BitmapFactory; import android.media.ExifInterface; import android.text.TextUtils...200K * * @param oldpath 压缩前的图片路径 * @param newPath 压缩后的图片路径 * @return */
public class MainActivity extendsAppCompatActivity {int REQUEST_CODE = 0;private...
相比之下,昨天出的Android 选择图片、上传图片之PictureSelector就更加友好和人性化了。 下面来说说集成遇到的问题以及解决方案。...你以为从sample中copy copy代码,导下包就能跑起来了吗,nonono 选择器不光是有图片的吧,你可能还有gif和视频啊,所以在配置的时候你要选择一个type啊 sample是这样的 Matisse.from...遇到几个点还没有解决,也懒得深入研究了,我要回家过年,哼 拍照还是选择相册,没有处理 预览,选择图片的时候可以预览,但是回调之后并不行,没有处理 onActivityResult回调之后的图片不能直接删除...; import android.content.pm.ActivityInfo; import android.net.Uri; import android.os.Bundle; import android.support.v7....widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup
(2019-07-05) 之前出过一篇 Android 选择图片、上传图片之ImagePicker,这个是okgo作者出的,就一般需求来讲是够了,但是没有压缩,需要自己去搞。...后来业务需求提升,页面要美,体验要好,便不是那么满足需求了,所幸在github上找到PictureSelector(然后当时没多久Matisse就开源了…可以看这里Android 选择图片、上传图片之Matisse...or视频的单选和多选 6.支持裁剪比例设置,如常用的 1:1、3:4、3:2、16:9 默认为图片大小 7.支持视频预览 8.支持gif图片 9.支持.webp格式图片 10.支持一些常用场景设置...:如:是否裁剪、是否预览图片、是否显示相机等 11.新增自定义主题设置 12.新增图片勾选样式设置 13.新增图片裁剪宽高设置 14.新增图片压缩处理 15.新增录视频最大时间设置 16.新增视频清晰度设置...()// 裁剪是否可放大缩小图片 true or false .videoQuality()// 视频录制质量 0 or 1 int .videoMaxSecond(15)// 显示多少秒以内的视频
PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。...功能: 正常加载图片 双击放大 手势随意缩放 随意拖动查看图片每一个角落 结合其他设置可实现翻转 1:本地图片加载 <ImageView android:layout_width="match_parent..." android:layout_height="300dp" android:id="@+id/id_loc" android:scaleType="fitXY..." /> <uk.co.senab.photoview.PhotoView android:layout_width="match_parent" android...:layout_height="400dp" android:src="@mipmap/ic_launcher" android:id="@+id/id_myimg"/>
最近项目要实现一个图片打标签的需求,在这里分享一个简易版的打标签: 1、点击图片任意位置跳转到标签列表页,选择后,标签锚点到点击位置。 2、点击锚点反转标签。...3、拖拽标签,限制在图片区域内。 先上图片方便理解: 实现的方案 1、用FramLayout:先加ImageView用于显示图片,再加标签View显示在图片上层。...2、tagBean记录 标签锚点位置 与 图片左上角距离的比例。 3、复杂的点击事件处理。...shinecjj/PictureTag PictureTagFrameLayout如下,其中最核心的方法onSizeChanged(int w, int h, int oldw, int oldh) 使用传进来的图片宽高比...mImageWHRatio计算出图片的mPhotoRectF,用来后面计算标签相对于图片的位置。
效果图: 后来又出了两篇,也可以看一下 Android 选择图片、上传图片之PictureSelector Android 选择图片、上传图片之Matisse 添加依赖: 选择图片:compile...//github.com/hongyangAndroid/okhttputils MainActivity.java package com.yechaoa.uploadimage; import android.content.Intent...; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7....widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import...android.widget.AdapterView; import com.lzy.imagepicker.ImagePicker; import com.lzy.imagepicker.bean.ImageItem
由于Android本身的机制限定 由于系统对每个应用内存分配规则的限制,如果加载过大图片很有可能会导致OOM 即闪退或者卡屏现象 但是手机上拇指大小的图片,超清是王权没有必要的 这是我们就需要对 对片进行压缩处理...: 大多数人采用先生成bitmap对象,反复压缩bitmap至100k一下的方法,对图片进行反复压缩,但如果是超级大图,bitmap生成本身就已经会导致OOM,所以我们应先对bitmap进行设置: public...设置 是的原图大小被缩小2*6=12倍 这里我解释一下Scenic和activity: 一、senic是我自定义的一个类,其中定义了一个数据成员:imageId 用来存/drawable文件夹下,一张图片的...(注:不同senic对象,代表不同图片,所以存的图片id不同)。...return bitmap; } 如下图中的图片,原大小为8.10MB: ---- 附源码Demo:欢迎 star ~
一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 848x480 output.jpg...%03d.jpg : 指定输出文件的命名模式 , %03d 是一个占位符 , 表示输出的图片文件名将包含一个三位的序号 , 从 001 开始计数 , 直到 999 ; 3、多张静态图片转视频 执行...2 秒的视频 ; 二、视频与 GIF 动态图片互相转换 1、视频转成 GIF 动态图片 执行 ffmpeg -i input.mp4 -ss 00:00:02 -t 00:00:05 -r 5 -s...848x480 output.gif 命令 , 将 视频 的 第 2 ~ 7 秒图像转为了 GIF 动态图片 , 每秒有 5 帧图像数据 ; 转换后的图像如下 : 2、 GIF 动态图片转成视频 执行...ffmpeg -f gif -i output.gif video.mp4 命令 , 将 output.gif 动态图片转为 mp4 视频 ;
先理解播放的场景,才能更好地理解视频处理时所选取的策略。 播放器做了什么 播放器播放视频,就是一步步剖开视频的内容,显示在屏幕上。 最简单的理解方式,是把视频文件看做一个容纳了很多图片的容器。...播放时,从容器里取出一张图片,放到屏幕上显示,隔一点时间后,再从容器里取出下一张图,放到屏幕上。按次序把图片一张一张显示到屏幕上,等到最后一张也显示到屏幕上后,播放就完成了。...我们来看看,Android为我们提供了哪些对象,可以让我们做视频的播放。 Android播放视频 下面我们介绍3种在Android上播放视频的方法。 1. 使用VideoView播放视频 ?...使用MediaPlayer和SurfaceView播放视频 ? Android系统,已经在底层我们打通了一条MediaPlayer到SurfaceView的数据通路,那就是Surface。...总结 以上在Android上实现的三种播放视频方法,从简单到复杂,可以根据自己功能的需要,灵活进行选择。如果只是简单地播放视频,可以使用VideoView。
视频组件选择 使用的是b站开源的ijk播放器 组件布局 正常的列表视频在视频加载完成之前肯定是要显示图片,视频加载好后在播放视频,ijk中没有发现视频有缩略图的选项,所以布局使用一个帧布局,用张图片把...VideoView盖住,当视频加载好后再把图片去掉(为什么不是VideoView盖住图片,如果这样的话再把VideoView展示出来的时候会有一个黑屏,比较影响体验) android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height..." android:layout_height="wrap_content" android:src="url" /> 视频展示 一般列表都是使用...,这时候视频是没法加载的,展示出来的就是一个黑屏,因为这个holder复用的前面的,前面的已经把图片去掉了,所以后面需要把图片加回来,也就是常说的RecyclerView中写了if,就得写else。
领取专属 10元无门槛券
手把手带您无忧上云