android图像编辑和处理(一)
1.使用内置Gallery应用程序选择图像:
</pre><pre name="code" class="java">package com.example.testphotoedit; import java.io.FileNotFoundException; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.net.Uri; import android.os.Bundle; import android.view.Display; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private ImageView chosenImageView,copyPicture; private Button choosePicture; private Uri imageFileUri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); choosePicture = (Button) findViewById(R.id.button_chose); chosenImageView = (ImageView) findViewById(R.id.chose_picture); copyPicture=(ImageView) findViewById(R.id.copy_picture); choosePicture.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.getId() == R.id.button_chose) { Intent chooseIntent = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//启动Gallery应用程序 startActivityForResult(chooseIntent, 0); } }
/* (non-Javadoc) * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) * * 在返回的意图数据中,返回选择的图像的URI */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { imageFileUri = data.getData(); Display currentDisply = getWindowManager().getDefaultDisplay(); int dw = currentDisply.getWidth() / 2 - 100; int dh = currentDisply.getHeight() / 2 - 100;
<span style="font-family: Arial, Helvetica, sans-serif;"> try {</span>
BitmapFactory.Options bmpFactory = new BitmapFactory.Options(); bmpFactory.inJustDecodeBounds = true;//加载图像的尺寸而非图像本身 Bitmap bmp = BitmapFactory.decodeStream(getContentResolver() .openInputStream(imageFileUri), null, bmpFactory); int heightRatio = (int) Math.ceil(bmpFactory.outHeight / (float) dh); int widthRatio = (int) Math.ceil(bmpFactory.outWidth / (float) dw); if (heightRatio > 1 && widthRatio > 1) { if (heightRatio > widthRatio) { bmpFactory.inSampleSize = heightRatio; } else { bmpFactory.inSampleSize = widthRatio; } } bmpFactory.inJustDecodeBounds = false;//加载真实的图像 bmp = BitmapFactory.decodeStream(getContentResolver() .openInputStream(imageFileUri), null, bmpFactory); chosenImageView.setImageBitmap(bmp); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(),bmp.getWidth(), bmp.getConfig()); Canvas canvas=new Canvas(alteredBitmap); Paint paint=new Paint(); canvas.drawBitmap(bmp, 0,0, paint); copyPicture.setImageBitmap(alteredBitmap);
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.testphotoedit.MainActivity$PlaceholderFragment" > <Button android:id="@+id/button_chose" android:layout_width="120dp" android:layout_height="60dp" android:text="选择图片"/> <ImageView android:id="@+id/chose_picture" android:layout_below="@+id/button_chose" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/copy_picture" android:layout_below="@+id/chose_picture" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
注:有什么不懂的可以留言。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。