将ImageView更改为黑白

编程入门 行业动态 更新时间:2024-10-13 16:20:44
本文介绍了将ImageView更改为黑白的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想将ImageView的图像更改为黑白.唯一的事情是我的代码允许用户拍摄照片,该照片被放置在imageview中.我希望那张照片是黑白的.如果有人知道我该怎么做,我将不胜感激.

I would like to change an ImageView's image to black and white. The only thing is my code allows the user to take a photo, that photo is placed in the imageview. I would like that photo to be black and white. If anyone knows how I could do this, I would appreciate it.

MainActivity:

MainActivity:

package com.example.triptych4; import java.io.File; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.Gallery; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { // label our logs "CameraApp3" private static String logtag = "CameraApp3"; // tells us which camera to take a picture from private static int TAKE_PICTURE = 1; // empty variable to hold our image Uri once we store it private Uri imageUri; private Integer[] pics = { R.drawable.android, R.drawable.android3d, R.drawable.background3 }; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Gallery gallery = (Gallery) findViewById(R.id.gallery1); gallery.setAdapter(new ImageAdapter(this)); imageView = (ImageView) findViewById(R.id.imageView1); gallery.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(getApplicationContext(), "pic:" + arg2, Toast.LENGTH_SHORT).show(); imageView.setImageResource(pics[arg2]); } }); // look for the button we set in the view ImageButton cameraButton = (ImageButton) findViewById(R.id.button_camera); // set a listener on the button cameraButton.setOnClickListener(cameraListener); } // set a new listener private OnClickListener cameraListener = new OnClickListener() { public void onClick(View v) { // open the camera and pass in the current view takePhoto(v); } }; public void takePhoto(View v) { // tell the phone we want to use the camera Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); // create a new temp file called pic.jpg in the "pictures" storage area of the phone File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "pic.jpg"); // take the return data and store it in the temp file "pic.jpg" intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); // stor the temp photo uri so we can find it later imageUri = Uri.fromFile(photo); // start the camera startActivityForResult(intent, TAKE_PICTURE); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public class ImageAdapter extends BaseAdapter{ private Context context; int imageBackground; public ImageAdapter(Context context){ this.context = context; } @Override public int getCount() { // TODO Auto-generated method stub return pics.length; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub ImageView imageView =new ImageView(context); imageView.setImageResource(pics[arg0]); return imageView; } } // override the original activity result function @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // call the parent super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { // if the requestCode was equal to our camera code (1) then... case 1: // if the user took a photo and selected the photo to use if(resultCode == Activity.RESULT_OK) { // get the image uri from earlier Uri selectedImage = imageUri; // notify any apps of any changes we make getContentResolver().notifyChange(selectedImage, null); // get the imageView we set in our view earlier ImageButton imageButton = (ImageButton)findViewById(R.id.button_camera); // create a content resolver object which will allow us to access the image file at the uri above ContentResolver cr = getContentResolver(); // create an empty bitmap object Bitmap bitmap; try { // get the bitmap from the image uri using the content resolver api to get the image bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage); // set the bitmap to the image view imageButton.setImageBitmap(bitmap); // notify the user Toast.makeText(MainActivity.this, selectedImage.toString(), Toast.LENGTH_LONG).show(); } catch(Exception e) { // notify the user Toast.makeText(MainActivity.this, "failed to load", Toast.LENGTH_LONG).show(); Log.e(logtag, e.toString()); } } } } }

布局:

<RelativeLayout xmlns:android="schemas.android/apk/res/android" xmlns:tools="schemas.android/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.triptych5.MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="200dp" android:layout_height="200dp" android:scaleType="fitXY" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignTop="@+id/button_camera"/> <ImageButton android:id="@+id/button_camera" android:layout_width="230dp" android:layout_height="235dp" android:scaleType="fitXY" android:rotation="-90" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:background="@drawable/middle4" /> <Gallery android:id="@+id/gallery1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/imageView1" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> </RelativeLayout>

推荐答案

您可以通过执行以下操作来简单地做到这一点:

You can simply achieve this by doing:

ImageView imageview = (ImageView) findViewById(R.id.imageView1); ColorMatrix matrix = new ColorMatrix(); matrix.setSaturation(0); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); imageview.setColorFilter(filter);

更多推荐

将ImageView更改为黑白

本文发布于:2023-10-27 10:38:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1533122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:黑白   ImageView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!