2013-12-25 4 views
4

Я хочу добавить некоторые эффекты к изображениям в Android. Я импортирую файл библиотеки в Aviary. Я просто более свежую для Android Development. Может ли кто-нибудь быть достаточно любезен, чтобы предоставить небольшой пример того, как использовать методы из файла библиотеки? Заранее спасибо. Счастливые рождественские парни. Я также попробовал пример с here. Но я запутался в реализации этого примера.Как работать с Bitmap (Effects) в Android?

КОД:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     iv = (ImageView) findViewById(R.id.butterfly_image); 
     iv.setImageBitmap(src); 
     Button b = (Button) findViewById(R.id.button); 
     b.setOnClickListener(this); 
    } 

public void onClick(View arg0) { 
    iv = (ImageView) findViewById(R.id.butterfly_image); 
    System.out.println("Inside onClick()"); 
    src = doHighlightImage(src); 
    System.out.println("doHighlightImage has been passed"); 
    iv.setImageBitmap(src); 
} 

public static Bitmap doHighlightImage(Bitmap src) { 
     // create new bitmap, which will be painted and becomes result image 
     Bitmap bmOut = Bitmap.createBitmap(src.getWidth() + 96, src.getHeight() + 96, Bitmap.Config.ARGB_8888); 
     // setup canvas for painting 
     Canvas canvas = new Canvas(bmOut); 
     // setup default color 
     canvas.drawColor(0, PorterDuff.Mode.CLEAR); 

     // create a blur paint for capturing alpha 
     Paint ptBlur = new Paint(); 
     ptBlur.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL)); 
     int[] offsetXY = new int[2]; 
     // capture alpha into a bitmap 
     Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY); 
     // create a color paint 
     Paint ptAlphaColor = new Paint(); 
     ptAlphaColor.setColor(0xFFFFFFFF); 
     // paint color for captured alpha region (bitmap) 
     canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor); 
     // free memory 
     bmAlpha.recycle(); 

     // paint the image source 
     canvas.drawBitmap(src, 0, 0, null); 

     // return out final image 
     return bmOut; 
    } 

Я не уверен в том, правильно или неправильно выполнение кода выше. Он не выполняется так, как ожидалось, поэтому я предполагаю, что это неправильно. Мой logcat показывает NullPointerException при вызове метода.

Logcat:

12-25 16:14:45.150: I/System.out(13695): Inside onClick() 
12-25 16:14:45.150: W/dalvikvm(13695): threadid=1: thread exiting with uncaught exception (group=0x4118d438) 
12-25 16:14:45.160: E/AndroidRuntime(13695): FATAL EXCEPTION: main 
12-25 16:14:45.160: E/AndroidRuntime(13695): java.lang.NullPointerException 
12-25 16:14:45.160: E/AndroidRuntime(13695): at com.example.effects.MainActivity.doHighlightImage(MainActivity.java:47) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at com.example.effects.MainActivity.onClick(MainActivity.java:41) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.view.View.performClick(View.java:4101) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.view.View$PerformClick.run(View.java:17082) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Handler.handleCallback(Handler.java:615) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Looper.loop(Looper.java:137) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at android.app.ActivityThread.main(ActivityThread.java:4954) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at java.lang.reflect.Method.invokeNative(Native Method) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at java.lang.reflect.Method.invoke(Method.java:511) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
12-25 16:14:45.160: E/AndroidRuntime(13695): at dalvik.system.NativeStart.main(Native Method) 

Я также узнал от некоторых постов в StackOverflow, что некоторые из примеров из http://xjaphx.wordpress.com не работает, как ожидалось. Любая помощь будет оценена. С Рождеством.

+0

Что такое 'src'? – GrIsHu

+0

src - битмап-переменная. – San

+0

Вы присвоили какое-либо изображение вашему растровому изображению? – GrIsHu

ответ

2

Я думаю, вы src bitmap variable имеет значение null. Вам нужно присвоить изображение, как показано ниже: И вам не нужно инициализировать ImageView два раза, как вы уже объявили его в onCreate()

изменения вы OnClick код, как показано ниже:

Чтобы получить изображение с вашего ImageView вам нужно получить изображение, как показано ниже:

Bitmap src= ((BitmapDrawable)iv.getDrawable()).getBitmap(); 

public void onClick(View arg0) { 

    System.out.println("Inside onClick()"); 
    src = doHighlightImage(src); 
    System.out.println("doHighlightImage has been passed"); 
    iv.setImageBitmap(src); 
} 
+0

Реализация его сейчас. Позвольте узнать его результат. – San

+0

Это работал человек. Благодарю приятеля. У меня также есть еще одно сомнение, если я могу? – San

+0

@San Да, скажите, в чем ваши сомнения? – GrIsHu

2

Здесь вы можете увидеть мой ответ. Это будет полезно для эффективного использования вашего растрового изображения.

How to make application more responsive which uses several bitmaps?

+0

Спасибо Kailash, очень полезно. – San

+0

Ваш приветствуется..bro ..! –

 Смежные вопросы

  • Нет связанных вопросов^_^