阅读背景:

android JNI处理图片的例子

来源:互联网 

//下面是主程序代码

 
   
import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ImageView;public class PhotoShop extends Activity {	private String tag = "IBMPhotoPhun";	private Bitmap bitmapOrig = null;	private Bitmap bitmapGray = null;	private Bitmap bitmapWip = null;	private ImageView ivDisplay = null;	// NDK STUFF	static {		try{		System.loadLibrary("haha");}		catch(Exception e) {			System.out.println("dd");		}	}	public native void convertToGray(Bitmap bitmapIn, Bitmap bitmapOut);	public native void changeBrightness(int direction, Bitmap bitmap);	public native void findEdges(Bitmap bitmapIn, Bitmap bitmapOut);	// END NDK STUFF	/** Called when the activity is first created. */	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		Log.i(tag, "before image stuff");		ivDisplay = (ImageView) findViewById(R.id.ivDisplay);		// load bitmap from resources		BitmapFactory.Options options = new BitmapFactory.Options();		// Make sure it is 24 bit color as our image processing algorithm		// expects this format		options.inPreferredConfig = Config.ARGB_8888;		bitmapOrig = BitmapFactory.decodeResource(this.getResources(),				R.drawable.sample, options);		if (bitmapOrig != null)			ivDisplay.setImageBitmap(bitmapOrig);	}	public void onResetImage(View v) {		Log.i(tag, "onResetImage");		ivDisplay.setImageBitmap(bitmapOrig);	}	// 边缘化	public void onFindEdges(View v) {		Log.i(tag, "onFindEdges");		// make sure our target bitmaps are happy		bitmapGray = Bitmap.createBitmap(bitmapOrig.getWidth(),				bitmapOrig.getHeight(), Config.ALPHA_8);		bitmapWip = Bitmap.createBitmap(bitmapOrig.getWidth(),				bitmapOrig.getHeight(), Config.ALPHA_8);		// before finding edges, we need to convert this image to gray		convertToGray(bitmapOrig, bitmapGray);		// find edges in the image		findEdges(bitmapGray, bitmapWip);		ivDisplay.setImageBitmap(bitmapWip);	}	public void onConvertToGray(View v) {		Log.i(tag, "onConvertToGray");		//创建一个和原图宽和高相等的灰色(一个像素是一个字节)图片,内容不确定或者为空(bitmapWip != null),就是说造好了格子只等填充数据		bitmapWip = Bitmap.createBitmap(bitmapOrig.getWidth(),				bitmapOrig.getHeight(), Config.ALPHA_8);		/**		 * java中图片的config(相当于格式)		 *  ALPHA_8     (2),	        RGB_565     (4),	        ARGB_4444   (5),	        ARGB_8888   (6);	        与android不同:	        ANDROID_BITMAP_FORMAT_RGBA_8888:1			ANDROID_BITMAP_FORMAT_A_8:8		 */		convertToGray(bitmapOrig, bitmapWip);		ivDisplay.setImageBitmap(bitmapWip);	}	//先要获得bitmapWip才能处理,否则setImageBitmap(byll)虽然不会报错,但是空白的	public void onDimmer(View v) {		Log.i(tag, "onDimmer");		changeBrightness(2, bitmapWip);		ivDisplay.setImageBitmap(bitmapWip);	}	//先要获得bitmapWip才能处理,否则setImageBitmap(byll)虽然不会报错,但是空白的	public void onBrighter(View v) {		Log.i(tag, "onBrighter");		changeBrightness(1, bitmapWip);		ivDisplay.setImageBitmap(bitmapWip);	}}impo



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: