2012-04-16 67 views
0

我是新来的android。我正在尝试做某种图像处理。但是我收到这个消息“这个应用程序---意外停止了,请重试。”请告诉我什么错误,我正在安卓应用做力关闭

package com.imagep.amit; 

import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.CompressFormat; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ImageView; 

public class ImagepActivity extends Activity { 
    /** Called when the activity is first created. */ 

    Bitmap myBitmap; 
    ImageView myImageView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String imageFileName= "/sdcard/test_vga.jpg"; 
     File imageFile= new File(imageFileName); 
     if (imageFile.exists()) { 
      // Load the image from file 
      myBitmap= BitmapFactory.decodeFile(imageFileName); 
      // Display the image in the image viewer 
      myImageView= (ImageView)findViewById(R.id.di); 
      if (myImageView!= null) { 
       myImageView.setImageBitmap(myBitmap); 
      } 
     } 
     this.processImage(); 
    } 

    private void processImage() { 
     brighten(50); 
     try { 
      String outputPath= "/test_vga_output.jpg"; 
      int quality = 75; 
      FileOutputStream fileOutStr= new FileOutputStream(outputPath); 
      BufferedOutputStream bufOutStr= new BufferedOutputStream(fileOutStr); 
      myBitmap.compress(CompressFormat.JPEG, quality, bufOutStr); 
      bufOutStr.flush(); 
      bufOutStr.close(); 
     } catch (FileNotFoundException exception) { 
      Log.e("debug_log", exception.toString()); 
     } catch (IOException exception) { 
      Log.e("debug_log", exception.toString()); 
     } 
     myImageView.setImageBitmap(myBitmap); 
    } 

    private void brighten(int i) { 
     int width = myBitmap.getWidth(); 
     int height = myBitmap.getHeight(); 
     int[] pix = new int[width * height]; 
     myBitmap.getPixels(pix, 0, width, 0, 0, width, height); 
     // Apply pixel-by-pixel change 
     int index = 0; 
     for(int y = 0; y < height; y++) { 
      for (int x = 0; x < width; x++) { 
       int r = (pix[index] >> 16) & 0xff; 
       int g = (pix[index] >> 8) & 0xff; 
       int b = pix[index] & 0xff; 
       r = 0; 
       g = 0; 
       b = 0; 
       pix[index++] = 0xff000000| (r << 16) | (g << 8) | b; 
      } // x 
     } // y 
     // TODO Auto-generated method stub 
    } 
} 
} 
+0

嗨,你需要发布LogCat日志,以知道你得到哪个异常,以及在哪一行。如果你使用的是eclipse,它会在底部。只需在这里复制并粘贴。 – noob 2012-04-16 14:43:09

回答

2

使用adb logcat,DDMS,或在Eclipse中DDMS角度来考察logcat的,看看你的错误相关的堆栈跟踪。

此外,从来没有硬线路径,特别是因为/sdcard是错误的 - 使用Environment.getExternalStorageDirectory()获得外部存储的根。

最后,您的实际问题可能来自:

String outputPath= "/test_vga_output.jpg"; 

这是一个无效的路径。我不知道你在想什么,但是你不能在那里写。但是,除此之外,您可能还有其他问题,堆栈跟踪将帮助您识别它们。