lineline camera电脑版怎么剪切手指

拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现 - CSDN博客
拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现
前言:这段时间也真是忙到死,本来一个月四篇的承诺,眼看就要打破了,咬着牙再出两篇,最近写工程时,遇到拍照和裁剪功能,也真是服了,各种问题有木有,最后终于找着了一个解决方案,就目前来讲,应用在工程中,还没有什么问题。如果大家有碰到问题,欢迎留言交流相关博客:看来很容易的问题,解决起来却也处处是坑,各种问题啊有木有,要吐血了啊有木有,到网上一搜一堆帖子,能用的基本上没有啊有木有,真是服了……这里有几篇写的比较好的文章,虽然不是终极方案,但也能我起到了启蒙作用,链接如下:1、2、&及其他文章底部链接中的上、中、下三篇3、& 这篇文章写的极好,分析问题非常出众4、这个大哥分析的也极好,不过他的终极解决方案在一些手机上行不通一、基础讲解一般而言,使用拍照和裁剪功能基本上都是使用系统自带的Intent来实现,看起来直接调别人的写好的东东会比较容易,但真正用起来确发现根本不是那回事,找不到源码是个最大的问题,话说我至今都没找到源码的位置,有哪位同学知道源码位置的留言下哦。言规正转,我们要将别人写好的Intent,那肯定要使用隐式Intent的方式来启用了,这里使用的是匹配Action:MediaStore.ACTION_IMAGE_CAPTURE,具体的值是:(MediaStore.java)拍照:(MediaStore.ACTION_IMAGE_CAPTURE)public static final java.lang.String ACTION_IMAGE_CAPTURE = &android.media.action.IMAGE_CAPTURE&;启用相册:(Intent.ACTION_GET_CONTENT)public static final java.lang.String ACTION_GET_CONTENT = &android.intent.action.GET_CONTENT&;启用裁剪:com.android.camera.action.CROP有关启用隐式Intent和显式Intent的方式参看这两篇文章:、要使用相应的功能是通过Intent.PutExtra(&key&,value);来实现的,对应的KEY和ValudeExta Options Table for image/* crop:附加选项数据类型描述cropString发送裁剪信号aspectXintX方向上的比例aspectYintY方向上的比例outputXint裁剪区的宽outputYint裁剪区的高scaleboolean是否保留比例return-databoolean是否将数据保留在Bitmap中返回dataParcelable相应的Bitmap数据circleCropString圆形裁剪区域?MediaStore.EXTRA_OUTPUT (&output&)URI将URI指向相应的file:///...,详见代码示例outputFormatString输出格式,一般设为Bitmap格式:pressFormat.JPEG.toString()noFaceDetectionboolean是否取消人脸识别功能这些参数是可以选择性使用的,想使用哪个功能就直接写上,不使用就不写,下面我们就一个个试试。这里我会始终将return_data设为false,因为如何设为TRUE,那对于有些手机而言,只会得到缩略图,所以这里一致用URI来输出。而URI在有些手机上也是存在问题的,这里先不谈,先用URI,因为这是网上一致认为的终极方案………………写在前面:由于我们会读写SD卡,所以先在AndroidManifest.xml中添加上SD卡的读写权限:&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& /&二、仅拍照(1)、核心代码:我们仅仅使用拍照的功能,而且将其输出到URI中,代码如下:启用拍照Activityprivate static final int RESULT_CAMERA_ONLY = 100;先构造一个temp.jpg的URIString path = getSDCardPath();
File file = new File(path + &/temp.jpg&);
imageUri = Uri.fromFile(file);然后通过MediaStore.ACTION_IMAGE_CAPTURE来隐式调起拍照Intent;然后将返回值设为false,并将MediaStore.EXTRA_OUTPU输出指定为 imageUri;然后将URI的输出格式设为JPEG,这是因为我们在构造URI时,使用的JPG格式:temp.jpg
Intent intent =
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_ONLY);大家可能对return-data和MediaStore.EXTRA_OUTPUT的作用有些迷糊;return-data:是将结果保存在data中返回,在onActivityResult中,直接调用intent.getdata()就可以获取值了,这里设为fase,就是不让它保存在data中MediaStore.EXTRA_OUTPUT:由于我们不让它保存在Intent的data域中,但我们总要有地方来保存我们的图片啊,这个参数就是转移保存地址的,对应Value中保存的URI就是指定的保存地址。至于这两个参数能不能同时设为输出,这个我也不清楚……在onActivityResult中接收:protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode) {
case RESULT_CAMERA_ONLY: {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}将接收到的ImageUri解析为Bitmap,因为我们的URI本来就是个Bitmap,然后将其设置到一个ImageView中显示;但在有的手机中ImageView并不会显示这个Bitmap,而查看根目录下的temp.jpg确实已经生成了。这是为什么?查看日志,报了个错:Bitmap too large to be uploaded into a texture (, max=)这是因为Bitmap太大了,超出了ImageView的显示范围所致,这里有三种解决办法:1、强制显示,关闭OpenGL加速(容易导致OOM)在AndroidManifest.xml中,application标签下添加一个属性:android:hardwareAccelerated=&false&即:
&application
android:hardwareAccelerated=&false&&
&/application&2、将图片缩小将指定图片缩小SCALE倍的代码如下:但如果图片足够大,缩小后也不定能显示……private Bitmap setScaleBitmap(Bitmap photo,int SCALE) {
if (photo != null) {
//为防止原始图片过大导致内存溢出,这里先缩小原图显示,然后释放原始Bitmap占用的内存
//这里缩小了1/2,但图片过大时仍然会出现加载不了,但系统中一个BITMAP最大是在10M左右,我们可以根据BITMAP的大小
//根据当前的比例缩小,即如果当前是15M,那如果定缩小后是6M,那么SCALE= 15/6
Bitmap smallBitmap = zoomBitmap(photo, photo.getWidth() / SCALE, photo.getHeight() / SCALE);
//释放原始图片占用的内存,防止out of memory异常发生
photo.recycle();
return smallB
}public Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {
int w = bitmap.getWidth();
int h = bitmap.getHeight();
Matrix matrix = new Matrix();
float scaleWidth = ((float) width / w);
float scaleHeight = ((float) height / h);
matrix.postScale(scaleWidth, scaleHeight);// 利用矩阵进行缩放不会造成内存溢出
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
}3、分块显示看这里(2)、实例效果图:点击按钮调起系统相册拍照,然后显示在ImageView中&&&&1、AndroidManifest.xml添加SD卡读写权限&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& /&2、主布局&LinearLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
tools:context=&.MainActivity&&
android:id=&@+id/btn_camera_only&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&仅拍照&/&
&ImageView
android:id=&@+id/image_result&
android:layout_width=&200dip&
android:layout_height=&200dip&
android:scaleType=&centerInside&
android:layout_gravity=&center_horizontal&/&
&/LinearLayout&3、主程序(MainActivity.java)三个变量:private static final int RESULT_CAMERA_ONLY = 100;
private ImageView mI
private Uri imageU
其中imageUri用来保存拍照后存储的数据;OnCreate()函数:protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String path = getSDCardPath();
File file = new File(path + &/temp.jpg&);
imageUri = Uri.fromFile(file);
mImage = (ImageView)findViewById(R.id.image_result);
Button btn_take_camera_only = (Button)findViewById(R.id.btn_camera_only);
btn_take_camera_only.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
takeCameraOnly();
}做了两件事:第一:初始化imageUri其中的getSDCardPath()是自己写的函数,下面会给出源码;第二:在点击按钮时调起相机:private void takeCameraOnly(){
Intent intent =
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_ONLY);
}然后对返回的数据进行处理:protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode){
case RESULT_CAMERA_ONLY:{
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}其中的获取SD卡路径的代码为:public static String getSDCardPath() {
String cmd = &cat /proc/mounts&;
Runtime run = Runtime.getRuntime();// 返回与当前 Java 应用程序相关的运行时对象
Process p = run.exec(cmd);// 启动另一个进程来执行命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
String lineS
while ((lineStr = inBr.readLine()) != null) {
// 获得命令执行后在控制台的输出信息
if (lineStr.contains(&sdcard&)
&& lineStr.contains(&.android_secure&)) {
String[] strArray = lineStr.split(& &);
if (strArray != null && strArray.length &= 5) {
String result = strArray[1].replace(&/.android_secure&,
// 检查命令是否执行失败。
if (p.waitFor() != 0 && p.exitValue() == 1) {
// p.exitValue()==0表示正常结束,1:非正常结束
inBr.close();
in.close();
} catch (Exception e) {
return Environment.getExternalStorageDirectory().getPath();
return Environment.getExternalStorageDirectory().getPath();
}源码会在文章底部给出三、拍照及裁剪初步实现效果图:点击按钮弹出拍照Intent,然后进入裁剪Intent,最后将裁剪后的图显示在ImageView中;& & & & & & & & &(一) & & & & & & & & & & & & & & & &(二)&&&&& & & & & & & & &(三) & & & & & & & & & & & & & & & & (四)&&在第一节说过,上面的几个参数是可以随意匹配使用的,那我们直接加上裁剪选项,并将结果存在imageUri中,看看会怎样。那我们在上面的纯拍照的代码中加以修改,在点击按钮时,强制拍照Intent,然后结果自己加入裁剪Intent中,结果同样存在imageUri中;OnCreate()中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String path = getSDCardPath();
File file = new File(path + &/temp.jpg&);
imageUri = Uri.fromFile(file);
mImage = (ImageView) findViewById(R.id.image_result);
Button btn_take_camera_only = (Button) findViewById(R.id.btn_camera_only);
btn_take_camera_only.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
takeCameraCropUri();
}开启拍照及裁剪功能:
private void takeCameraCropUri() {
Intent intent =
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(&crop&, &true&);
intent.putExtra(&aspectX&, 1);
intent.putExtra(&aspectY&, 1);
intent.putExtra(&outputX&, 1000);
intent.putExtra(&outputY&, 1000);
intent.putExtra(&scale&, true);
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_CROP_URI);
结果接收:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode) {
case RESULT_CAMERA_CROP_URI: {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}一切看起来那么美好,但一运行会发现——拍照完成之后崩了!!!!!!为什么会这样!!!!我也不知道怎么找源码,只能靠猜了……个人认为,我们把最终结果存在了imageUri中,但从拍照Intent到裁剪Intent之间结果是怎么传的呢?估计是通过Intent中的data来传的,当数据过大,即超过1M时就崩了!!!!所以我们要想办法分离这个过程,将中间数据先暂存一下,然后再调裁剪Intent,最后把结果存在Uri中。基于这个想法,下面看看具体实现过程:四、拍照及裁剪终极方案首先声明两个Uri,一个保存拍照的结果,一个保存裁剪的结果:
private static final int RESULT_CAMERA_ONLY = 100;
private static final int RESULT_CAMERA_CROP_PATH_RESULT = 301;
private ImageView mI
private Uri imageU
private Uri imageCropU然后在OnCreate()函数中初始化:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String path = getSDCardPath();
File file = new File(path + &/temp.jpg&);
imageUri = Uri.fromFile(file);
File cropFile = new File(getSDCardPath() + &/temp_crop.jpg&);
imageCropUri = Uri.fromFile(cropFile);
mImage = (ImageView) findViewById(R.id.image_result);
Button btn_take_camera_only = (Button) findViewById(R.id.btn_camera_only);
btn_take_camera_only.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
takeCameraOnly();
}点击按钮时仅调起拍照Intent,将结果存在imageUri中
private void takeCameraOnly() {
Intent intent =
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_ONLY);
}在接收到返回的消息后,调起裁剪Intent:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode) {
case RESULT_CAMERA_ONLY: {
cropImg(imageUri);
}其中cropImg(Uri uri)是调起裁剪Intent,代码如下:public void cropImg(Uri uri) {
Intent intent = new Intent(&com.android.camera.action.CROP&);
intent.setDataAndType(uri, &image/*&);
intent.putExtra(&crop&, &true&);
intent.putExtra(&aspectX&, 1);
intent.putExtra(&aspectY&, 1);
intent.putExtra(&outputX&, 700);
intent.putExtra(&outputY&, 700);
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageCropUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_CROP_PATH_RESULT);
}将传进去的uri做为源数据,即被裁剪的数据,将结果存储在imageCropUri中;然后接收返回的结果:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode) {
case RESULT_CAMERA_ONLY: {
cropImg(imageUri);
case RESULT_CAMERA_CROP_PATH_RESULT: {
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageCropUri));
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}将存储裁剪结果的imageCropUri,转换为Bitmap,然后在ImageView中显示;完整的代码如下:public class MainActivity extends Activity {
private static final int RESULT_CAMERA_ONLY = 100;
private static final int RESULT_CAMERA_CROP_PATH_RESULT = 301;
private ImageView mI
private Uri imageU
private Uri imageCropU
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String path = getSDCardPath();
File file = new File(path + &/temp.jpg&);
imageUri = Uri.fromFile(file);
File cropFile = new File(getSDCardPath() + &/temp_crop.jpg&);
imageCropUri = Uri.fromFile(cropFile);
mImage = (ImageView) findViewById(R.id.image_result);
Button btn_take_camera_only = (Button) findViewById(R.id.btn_camera_only);
btn_take_camera_only.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
takeCameraOnly();
private void takeCameraOnly() {
Intent intent =
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_ONLY);
public void cropImg(Uri uri) {
Intent intent = new Intent(&com.android.camera.action.CROP&);
intent.setDataAndType(uri, &image/*&);
intent.putExtra(&crop&, &true&);
intent.putExtra(&aspectX&, 1);
intent.putExtra(&aspectY&, 1);
intent.putExtra(&outputX&, 700);
intent.putExtra(&outputY&, 700);
intent.putExtra(&return-data&, false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageCropUri);
intent.putExtra(&outputFormat&, pressFormat.JPEG.toString());
intent.putExtra(&noFaceDetection&, true);
startActivityForResult(intent, RESULT_CAMERA_CROP_PATH_RESULT);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK)
switch (requestCode) {
case RESULT_CAMERA_ONLY: {
cropImg(imageUri);
case RESULT_CAMERA_CROP_PATH_RESULT: {
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageCropUri));
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
public static String getSDCardPath() {
String cmd = &cat /proc/mounts&;
Runtime run = Runtime.getRuntime();// 返回与当前 Java 应用程序相关的运行时对象
Process p = run.exec(cmd);// 启动另一个进程来执行命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
String lineS
while ((lineStr = inBr.readLine()) != null) {
// 获得命令执行后在控制台的输出信息
if (lineStr.contains(&sdcard&)
&& lineStr.contains(&.android_secure&)) {
String[] strArray = lineStr.split(& &);
if (strArray != null && strArray.length &= 5) {
String result = strArray[1].replace(&/.android_secure&,
// 检查命令是否执行失败。
if (p.waitFor() != 0 && p.exitValue() == 1) {
// p.exitValue()==0表示正常结束,1:非正常结束
inBr.close();
in.close();
} catch (Exception e) {
return Environment.getExternalStorageDirectory().getPath();
return Environment.getExternalStorageDirectory().getPath();
}到这里,这篇文章就讲完了,写的比较乱,原理应该是讲清楚了,有关从相册选择及裁剪的部分在下篇中讲解。源码内容:1、BlogCameraOnly:仅拍照功能2、BlogCameraCropCrash:第三部分对应的源码,根本起不来裁剪Intent,造成Crash3、BlogCameraCropFinally:拍照及裁剪的终极方案;如果本文有帮到你,记得关注哦源码下载地址:请大家尊重原创者版权,转载请标明出处:& 谢谢。
本文已收录于以下专栏:
相关文章推荐
前言:前段时间做项目用到了图片裁剪,调用系统裁剪图片,结果在我的小米3上一直有问题,裁剪界面打不开,在其他设备上没问题,于是研究其他软件是怎么做的,淘宝的裁剪图片是自己做的,当然没问题,京东的是调用的...
项目简介:该项目为调用系统的照相机和摄像机详细介绍:用户点击 “拍照”按钮后,调用系统的照相机,拍照后,自动出现剪切程序,然后剪切后将图片显示在屏幕上。并且,在系统的图库应用中也能查看到该图片。该应用...
android拍照或从相册取图片并裁剪,这个功能很常用,网上也有不少例子,可是很多之前的代码已经都不好用了。这个可能与4.4之后,相册返回的地址和原来不一样有关系吧,下面是我的代码,在nexus6中测...
通过拍照或相册中获取图片,并进行裁剪操作,然后把图片显示到ImageView上。
当然也可以上传到服务器(项目中绝大部分情况是上传到服务器),
测试了多款手机暂时没有发现严重问题。代码有注释,直接...
在Android 7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些错误:android.os.FileUriExposedException: file:///storage/emulated/...
跳转到相机界面然后裁剪图片
使用android内置的相机拍照然后获取到这张照片
直接上代码:
[java] view
plain copy
最近在使用一加3手机,Android系统6.0,进行测试的时候,发现调用手机的拍照和相册选择图片的功能返回的时候都无法调用系统的裁剪功能,Log日志也没有输出有用的信息。经过在网上大量的查找资料,拍照...
之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过。
再也不要问度娘了,再也不用一堆博客里找啊找了。。。
----------------------------...
本篇内容是接上篇《Android开发技巧——定制仿微信图片裁剪控件》 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪。裁剪控件的简单使用XML代码使...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)& iOS下载 &
LINE Camera(aillis相机) 12.1.2
投诉建议:
千万流量共享 百度高权重排名
软件大小: 54.0M
软件厂商:
LINE Corporation
软件语言: 简体中文
软件授权: 免费
更新时间:
支持类型: Touch、iPhone
太平洋本地下载
LINE Camera(aillis相机)12.1.2应用截图
aillis相机现在更名为LINE camera,由全球首屈一指的免费网络电话及信息服务提供者LINE发布的一款相机应用,提供了大量的图片美化功能。您可以使用aillis相机,轻松地将照片装饰得更加有趣、更加可爱,并与朋友们分享。 还可以轻松地发送带有LINE人气角色的照片哦!本站提供最新iPhone版的LINE camera中文版下载。【LINE Camera的特点】● 不断增加的免费素材包括LINE人气贴图在内的1000多种贴图、100多种边框、以及100多种文字素材全部都是免费哒!● 5000多种贴图众多有名的卡通形象,以及人气插画师特别设计的可爱漂亮的贴图,每周都会更新哦!● 漂亮的滤镜使用滤镜进行细微调节,轻松地修饰照片,完美呈现你的独特魅力!● 自制手绘贴图你可以自己绘制的图案和文字制成贴图,还可以将照片中的一部分剪出来制成贴图!● 轻松自然的美容功能!无需繁琐的操作,使用自动调整等功能,轻松简单地修饰您的照片。● 随心搭配组合的拼贴图片功能!将多张照片自由组合在一起,制作属于您自己的拼贴照片。● 正统的照相辅助功能拍照时还有倒计时拍摄、点击屏幕拍摄、显示网格线等很多种方便快捷的辅助功能可以选择哦!● 轻松分享可以在各种社交网站上分享您的照片哦!=====================================【相机功能一览】• 拍摄正方形(1:1)和长方形(3:4)照片• 自助倒计时拍摄• 点击屏幕拍摄• 显示网格/水平仪【照片修改功能一览】&#多种贴图&#多种边框• 30多种滤镜&#种笔刷&#多种字体• 手绘贴图【美容功能一览】• 可轻松调整肌肤的明暗度/平滑度• 平衡微调功能• 自由整形的瘦身功能• 自然的大眼功能• 袪痘、祛黑眼圈功能=====================================※为了能够自动(免费)下载漂亮可爱的贴图和边框,使用aillis时需要连接网络。初次流量约为50MB。※除您在SNS社交网站上共享照片以外,不会自动上传照片。LINE Corporation 网站LINE Camera 支持版本 12.1.2 中的新功能- 已添加新滤镜「厨房」,可用于优化美食照片。- 视频编辑功能现在已包括快进、慢进和回放模式。- 您现在可删除已下载的动态贴图。- 修复其他微小错误并进行改进。
太感谢了,终于有网站可以下载LINE camera了,还没用,试过之后再来评论
在同类的摄影录像应用中,LINE camera绝对称得上有优秀的操作体验
超级棒的应用!新版本的用起来更加流畅,真的很强大!
推荐,这个应用我用了很久了,还行
LINE camera这款应用的简体中文版本用起来就是舒服
91MB|100MB|123MB|119MB|48MB|131MB|
相关专题   最近发现,好多朋友在问iPhone的拍照技巧,其实再好的技巧也抵不过一款优秀的iPhone拍照软件,现在iPhone自拍神器拍照的同时能自动将照片进行美化,拍出来的...共收集款软件 当一开始让小编上iPad图片编辑软件的时候,其实是拒绝的,因为我觉得左上角45自拍的完美身材是不存在的,我又不想说,我放上软件都是没用的,很烂,很差,很衰!结果大家出来...共收集款软件
  iphone网络电话哪个好用呢?在移动互联网高度发展的现在移动互联网取代传统运营商通话功能越来越明显,一大波免费网络电话app应运而生,那么iphone网络电话哪...共收集款软件   iOS图片处理软件让你再也不用去到处求大神来帮自己P图。有时给打扮美美的给自己来张自拍照,结果不知道什么问题,总感觉照片没自己好看?相信不少朋友有这样的烦恼,这时候...共收集款软件   在这不修图不能见人的时代,苹果滤镜软件可以让一个人的照片发生翻天覆地的变化,有了iphone滤镜app即使是凤姐也能变美女哦!PConline编辑推荐的这些ipho...共收集款软件
今日更新推荐 同类软件下载排行
热门关键词

我要回帖

更多关于 line camera怎么盖图 的文章

 

随机推荐