android takepicture raw,关于Camera.takePicture( null , rawCallback , jpgCallback)

本文介绍了一段关于如何在Android应用中使用PictureCallback实现JPEG照片的存储,包括创建存储目录、格式化日期、保存临时文件并压缩图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

jpg存储实现如下:

//jpg照片存储

private PictureCallback fjpgCallback = new PictureCallback()

{

@SuppressLint("SimpleDateFormat")

public void onPictureTaken( byte[] data , Camera camera )

{

String sdCard = Environment.getExternalStorageDirectory().getPath();

String dirFilePath = sdCard + File.separator + "DCIM" + File.separator + "Camera" + File.separator;

Bitmap bitmap = BitmapFactory.decodeByteArray( data , 0 , data.length );

try

{

//创建存放照片的文件夹

File dirFile = new File( dirFilePath );

if( !dirFile.exists() )

{

dirFile.mkdir();

Log.v( TAG , "创建文件完成" );

}

else

{

Log.v( TAG , "文件存在,无需创建" );

}

Date date = new Date();

SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd_HH:mm:ss" );//可以方便地修改日期格式

String time_stringFormat = dateFormat.format( date );

File file = File.createTempFile( "IMG_" + time_stringFormat , ".jpg" , dirFile );

BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( file ) );

bitmap.compress( Bitmap.CompressFormat.JPEG , 100 , bos );

bos.flush();

bos.close();

camera.stopPreview();

camera.startPreview();

}

catch ( Exception e )

{

e.printStackTrace();

Log.v( TAG , "存储出错" );

}

finally

{

//非常重要:存储完照片后重新开启preview

mCamera.startPreview();

imgbTakePicture.setClickable( true );

}

}

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值