Android拍照得到全尺寸图片并进行压缩

废话不多说了,直接给大家贴代码了,具体代码如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/take_photo" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Take Photo" /> <Button android:id="@+id/get_photo" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="get Photo" /> <ImageView android:id="@+id/picture" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center_horizontal" /> </LinearLayout> package com.example.choosepictest; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { static final int REQUEST_IMAGE_CAPTURE = 1; private Button takePhoto; private Button getPhoto; private ImageView picture; private Uri imgUri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); takePhoto = (Button) findViewById(R.id.take_photo); getPhoto = (Button) findViewById(R.id.get_photo); picture = (ImageView) findViewById(R.id.picture); takePhoto.setOnClickListener(this); getPhoto.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.take_photo: dispatchTakePictureIntent(); break; default: break; } } // 保存全尺寸照片 String mCurrentPhotoPath; private void dispatchTakePictureIntent() { File appDir = new File(Environment.getExternalStorageDirectory(), "/etoury/picCache"); if (!appDir.exists()) { appDir.mkdir(); } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") .format(new Date()); String fileName = timeStamp + ".jpg"; File outputImage = new File(appDir, fileName); try { if (outputImage.exists()) { outputImage.delete(); } outputImage.createNewFile(); } catch (IOException e) { e.printStackTrace(); } mCurrentPhotoPath = outputImage.getAbsolutePath(); imgUri = Uri.fromFile(outputImage); // 意图 相机 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri); // 如果有相机 if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } } //解码缩放图片(Decode a Scaled Image) private void setPic() { // Get the dimensions of the View int targetW = picture.getWidth(); int targetH = picture.getHeight(); // Get the dimensions of the bitmap BitmapFactory.Options bmOptions = new BitmapFactory.Options(); // 该 值设为true那么将不返回实际的bitmap,也不给其分配内存空间这样就避免内存溢出了。但是允许我们查询图片的信息这其中就包括图片大小信息 bmOptions.inJustDecodeBounds = true; BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); int photoW = bmOptions.outWidth; int photoH = bmOptions.outHeight; // Determine how much to scale down the image // Math.min求最小值 int scaleFactor = Math.min(photoW/targetW, photoH/targetH); // Decode the image file into a Bitmap sized to fill the View bmOptions.inJustDecodeBounds = false; // 设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误 bmOptions.inSampleSize = scaleFactor; // 如果inPurgeable设为True的话表示使用BitmapFactory创建的Bitmap,用于存储Pixel的内存空间在系统内存不足时可以被回收 bmOptions.inPurgeable = true; Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); picture.setImageBitmap(bitmap); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case REQUEST_IMAGE_CAPTURE: setPic(); break; default: break; } } } }

以上代码就是本文给大家介绍的Android拍照得到全尺寸图片并进行压缩 的全部内容,希望大家喜欢。

时间: 2024-09-19 23:44:40

Android拍照得到全尺寸图片并进行压缩的相关文章

Android拍照得到全尺寸图片并进行压缩_Android

废话不多说了,直接给大家贴代码了,具体代码如下所示: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <

Android拍照和获取相册图片_Android

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过.  再也不要问度娘了,再也不用一堆博客里找啊找了...  ----------------------------------------------我是正文的分割线-----------------------------------------------------------  一个一个来,先说调用手机相机拍照(最简单版): cameraButton.setOnClickListener(new V

Android拍照和获取相册图片

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过. 再也不要问度娘了,再也不用一堆博客里找啊找了... ----------------------------------------------我是正文的分割线----------------------------------------------------------- 一个一个来,先说调用手机相机拍照(最简单版): cameraButton.setOnClickListener(new View

安卓开发之android 拍照和相册选择图片例子

android从选择图片有两种方法,但是返回值确不同,本文将指导大家如何统一这两种方式的返回值. //关键代码  @Event(R.id.btnPhoto)     private void onBtnPhotoClicked(View view) {         Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);         startActivity

Android拍照裁剪图片

下面是效果图,看看是不是亲想要的效果图,如果是,这段代码你就可以参考下了,但是要灵活运用,根据需求做相应的改动. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation

camera-android 拍照保存下来的图片用自带的图片浏览应用打不开

问题描述 android 拍照保存下来的图片用自带的图片浏览应用打不开 是这样的,我照着官方上面Camera的使用代码写了一遍,照的图片的确是保存在指定目录了,但是点击图片的时候自带的相册浏览应用无法打开,官方保存的文件类型是jpg的.我发现打不开,然后我试着用别的应用把后缀名改成jpeg,改了名之后奇迹般的,自带的相册应用就能打开了!然后我怀疑是不是文件类型名的问题,我把保存的图片类型从jpg改成jpeg,然后发现,打不开!最后我发现了问题:无论我保存的是什么类型(jpg或jpeg)的图片文件

android使用webview上传文件(相册和拍照)怎么重新选择图片

问题描述 android使用webview上传文件(相册和拍照)怎么重新选择图片 android使用webview上传文件(相册和拍照),第一次选择图片的时候没问题,但第二次选择图片时不能覆盖第一次选择的图片,还是只能上传第一次选择的图片. 解决方案 http://blog.csdn.net/woshinia/article/details/19030437 解决方案二: 在选完照片后把存图片的把集合清空,然后第二次进来的时候重新赋值了 解决方案三: Android使用WebView从相册/拍照

Android实现拍照、选择相册图片并裁剪功能_Android

通过拍照或相册中获取图片,并进行裁剪操作,然后把图片显示到ImageView上.  当然也可以上传到服务器(项目中绝大部分情况是上传到服务器),参考网上资料及结合项目实际情况,  测试了多款手机暂时没有发现严重问题.代码有注释,直接贴代码: public class UploadPicActivity extends Activity implements View.OnClickListener { private Button take_photo_btn; private Button s

Android拍照或从图库选择图片并裁剪_Android

今天看<第一行代码>上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo.  一. 拍照选择图片 1.使用隐式Intent启动相机 //构建隐式Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 startActivityForResult(intent, 1); 2.处理相机拍照返回的结果 //用户点击了取消 if(data ==