導航:首頁 > 操作系統 > android拍照裁剪圖片上傳

android拍照裁剪圖片上傳

發布時間:2022-10-01 05:45:09

『壹』 android拍照圖片裁剪的問題

在裁剪代碼執行之前加上這幾句試試

try {
Runtime.getRuntime().exec("chmod 777 " + file.getAbsolutePath());

} catch (IOException e) {

e.printStackTrace();
}

『貳』 如何在Android手機上批量剪切圖片

若手機需要編輯圖片,如果使用的是三星手機產品,請參考以下內容:
1.手機支持圖片編輯器功能:打開照相機-點開某張圖片-菜單鍵-編輯-圖片編輯器-然後可以編輯圖片。
2.下載第三方美圖軟體編輯,如美圖秀秀、網路魔圖等軟體。

『叄』 做了一個Android的demo實現頭像裁剪上傳,但是拍照完成後出現如下圖問題,圖庫也一樣大神們幫忙看看

實現思維路徑:
以進入相機拍照的思維路線為例子:
1.進入app
2.判斷之前是否保存頭像,如果有就顯示歷史圖像 (下面代碼中在getOldAvatar();方法中執行這個邏輯)
3.點擊更換圖像的Button或者布局,啟動對話框(下面代碼中在dialogueBox();方法執行這個邏輯)
4.系統版本判斷授權方式(靜態還是動態授權),判斷之前是否已經授權 (setPermissions(Permissions_CAMERA_KEY);這個方法執行授權邏輯)
5.如果是首次授權,就執行首次授權完成後馬上運行的回調方法 onRequestPermissionsResult
5.判斷完成不管是否是首次授權還是之前就是授權過了都要執行enterCamera();方法啟動相機並且發送攜帶數據的請求
6.啟動相機完成後,並且拍照完成退出相機,都要運行Intent返回數據請求回調方法onActivityResult。將傳入的數據傳入到cropPhoto(data.getData());方法里去執行圖片剪裁。
7.在cropPhoto方法里將攜帶數據跳轉到裁剪界面中裁剪圖片,裁剪完成後又要回到onActivityResult回調方法里,執行裁剪完的數據回調工作。

8.在onActivityResult回調方法里,裁剪完的圖片將運行setPicToView 方法保存圖片。保存的圖片將在下次啟動activity時作為歷史頭像調用。

package com.example.lenovo.mydemoapp;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

『肆』 為啥android拍照後的裁剪界面閃了一下就消失了

步驟:點擊按鈕,彈出對話框,選擇拍照或者從相冊選擇圖片,並且保存到SD卡中,並且顯示在Imageview中
首先最終結果存在了imageUri中,但從拍照Intent到裁剪Intent之間結果是怎麼傳的呢?估計是通過Intent中的data來傳的,當數據過大,即超過1M時就崩了!!!!所以我們要想辦法分離這個過程,將中間數據先暫存一下放在imageUri ,然後再調裁剪Intent,最後把結果存在imageCropUri 中。
這樣就完美解決拍照裁剪圖片完成之後崩潰問題。

『伍』 調用 android 自身裁剪功能

在Android操作系統下可通過編程實現對視頻圖像進行抓拍並對圖片的裁剪與上傳功能。簡單的實現方法採用Android 自帶有關於照片的自由裁剪,非常適用及視頻抓拍的介面功能。
一、視頻抓拍
1、基本類
Android 框架通過 Camera API 或者 camer Intent 的方式,支持 捕捉圖像和視頻 。相關的大類主要有以下幾個:
(1) Camera 攝像時候必須調用到的類;
(2)SurfaceView 提供攝像頭預覽。
(3)MediaRecorder 錄像時候用到的類;
(4)Intent 如果不通過 Camera 對象來操控攝像頭,那麼用兩個intent 動作 MediaStore.ACTION_IMAGE_CAPTURE or MediaStore.ACTION_VIDEO_CAPTURE 也能夠實現攝影和錄像。
o MediaStore.ACTION_IMAGE_CAPTURE —— 向內置攝像頭程序請求圖像的意圖活動類型。
o MediaStore.ACTION_VIDEO_CAPTURE —— 向內置攝像頭程序請求視頻的意圖活動類型。

2、 Manifest 聲明
在使用Camera API前,必須做出使用 Camera 硬體的聲明。主要有下面 點:
(1) Camera 允許:(注意,如果是通過intent 意圖來操控的,則不需要下面聲明)
<uses-permission android:name="android.permission.CAMERA" />
(2)Camera 特徵,比如說名字
<uses-feature android:name="android.hardware.camera" />
(3)如果你要在SD卡中保存照片和視頻,那麼就得開啟SD卡許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(4)錄音許可權
<uses-permission android:name="android.permission.RECORD_AUDIO" />
(5)如果希望在照片中插入GPS當地信息,還得開啟GPS
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
3、使用方法
使用攝像頭的方法有兩種:
一種是編寫代碼比較少的,快速使用攝像頭的意圖Intent 方法;
另外一種就是 自動外觀的攝像頭用戶界面,要求編寫更多的代碼。
4、使用Intent 快速應用攝像頭:使用默認配置拍攝並保存

二、圖片自由裁剪
關鍵代碼如下:
public void imageCut(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", 100);
intent.putExtra("outputY", 100);
//要求返回數據
intent.putExtra("return-data", true);
startActivityForResult(intent, 100);
}
返回數據後直接在onActivityResult 里對返回的圖片數據進行顯示就行了,這里由於剪切後的圖片較小,個人覺得應該不用考慮OOM的問題,問題是,在調用自帶的裁剪功能的時候,由於沒看源碼,所以不知道在調整裁剪框的時候,顯示的那副圖片有沒有進行壓縮,如果沒有進行壓縮,那麼當圖片很大的時候,載入起來就很容易出現OOM了,明顯對此由於是調用官方的API,我沒有方法去解決它。唯一的辦法就是不用它,而是自己去寫一個,就可以避免這個問題。利用如下的代碼進行壓縮,很好地避免OOM問題。

『陸』 Android 圖片選擇(ImageSelector) (拍照,裁剪,壓縮,查看)

1.遍歷sdcard文件夾(指定層次深度 searchDeep ),如果文件夾發現圖片 , 添加到已搜索到圖片的文件列表中,並跳入下一個文件夾搜索

2.使用 ContentResolver 搜索 添加搜索標簽(png,jpg,jpeg,gif 等) 優點:更快速

壓縮調用

第一步-->

采樣率壓縮:設置 BitmapFactory.Options.inSampleSize 大小

第二步-->

PNG:尺寸壓縮( Config:ARGB_4444 ,工具: Canvas );

JPG:尺寸壓縮( Config:ARGB_565 ,工具: Canvas )+壓縮質量( bitmap.compress() )

注 :

1.GIF不做壓縮處理

2.尺寸壓縮:改變寬高(png,jpg)

3.壓縮質量:改變文件大小(適用jpg,png無效)

『柒』 請android高手幫忙!

使用照相機的方法:
//在監聽事件中加入如下代碼
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/","temp.jpg")));
startActivityForResult(intent, reqCode_CAMERA);// reqCode_CAMERA是一個一自己設定的值,用於在onActivityResult方法中判斷是哪一個activity返回的
再重寫onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == reqCode_CAMERA && resultCode== RESULT_OK){
////這里是直接隱式啟動系統圖片預覽程序
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_VIEW);
//// uri指向用戶選擇的那個圖片
// Uri uri = data.getData();
// intent.setData(uril);
// startActivity(intent);

// Uri uri = data.getData();
// Cursor cursor = getContentResolver().query(uri, null, null, null, null);
// if(cursor!=null&&cursor.moveToFirst()){
// String path = cursor.getString(1);
// Bitmap bm = BitmapFactory.decodeFile(path);
// iv.setImageBitmap(bm);
// }
// iv.setImageURI(uri);

//也可以用這里代碼打開圖片裁剪
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setType("image/*");
intent.putExtra("data", data.getExtras().getParcelable("data"));
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);//默認圖片剪裁起始位置x值
intent.putExtra("aspectY", 1);//默認圖片剪裁起始位置y值
intent.putExtra("outputX", 128);//默認圖片剪裁終止位置x值
intent.putExtra("outputY", 128);//默認圖片剪裁終止位置x值
intent.putExtra("return-data", true);
startActivityForResult(intent, reqCode_Zoom);

}//這里是處理剪裁圖片返回後的處理,直接調用ImageView顯示了,你可以根據你的需要修改
else if(requestCode==reqCode_Zoom){
Bitmap bitmap = data.getExtras().getParcelable("data");
iv.setImageBitmap(bitmap);
}

上傳本地圖片方法:

按鈕名.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 隱式啟動系統相冊程序
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setDataAndType(Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, reqCode_PICK);// reqCode和上面一樣自己定義,但是不要重復了
}
});
再在onActivityResult方法添加一個"elseif(requestCode == reqCode_PICK && resultCode== RESULT_OK)"條件,方法體直接參考上面,就是在剪裁那裡把「intent.putExtra("data", data.getExtras().getParcelable("data"));」換為「intent.setDataAndType(data.getData(), "image/*");」就可以了。

『捌』 在android開發中,拍照後的圖片進行剪切後,怎麼保存呢

流,給你一個保存的方法
你應該是拍照以後再onActivityResult中回去圖片 再進行操作 得到最終的bitmap 在用下面的方法保存指定圖片的路徑、名稱保存。

// 保存拍攝的照片到手機的sd卡
private void SavePicInLocal(Bitmap bitmap) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
ByteArrayOutputStream baos = null; // 位元組數組輸出流
try {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] byteArray = baos.toByteArray();// 位元組數組輸出流轉換成位元組數組
picName = (list.size() + 1) < 10 ? memberInfoID + "-0"
+ (list.size() + 1) + ".jpg" : memberInfoID + "-"
+ (list.size() + 1) + ".jpg";
File file = new File(PHOTO_DIR, picName);
// 將位元組數組寫入到剛創建的圖片文件中
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(byteArray);

} catch (Exception e) {
e.printStackTrace();

} finally {
if (baos != null) {
try {
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}

}
這個保存的是縮略以後的 有50k左右,

閱讀全文

與android拍照裁剪圖片上傳相關的資料

熱點內容
程序員用得到數字區嗎 瀏覽:174
python求商 瀏覽:477
ipad能用c語言編譯器嗎 瀏覽:561
軟泥解壓球最新版 瀏覽:998
4萬程序員辭職創業 瀏覽:759
thinkingphp 瀏覽:597
安卓相冊移動文件夾 瀏覽:6
耳朵清潔解壓聲控99的人都睡得著 瀏覽:205
叉車出租網站源碼 瀏覽:874
共享單車的app是什麼 瀏覽:408
不帶gui的伺服器什麼意思 瀏覽:373
金剛經及PDF 瀏覽:102
php中冒號 瀏覽:358
php5432 瀏覽:352
命令在哪使用 瀏覽:172
php獲取網頁元素 瀏覽:708
為什麼需要硬體驅動編譯 瀏覽:885
pm編程怎樣看導柱孔對不對稱 瀏覽:138
農業大學選課找不到伺服器怎麼辦 瀏覽:660
路由配置網關命令 瀏覽:935