La conversion d'aperçu d'image bitmap

Je sais que le sujet a été sur le conseil d'administration de nombreuses fois, mais je ne peux pas le faire fonctionner, de toute façon...
Je veux sauvegarder visualiser des images à partir de l'aperçu pour les fichiers jpeg. Il semble plus ou moins(le code est simplifié - sans logique supplémentaire, à l'exception etc) comme ça...

public void onPreviewFrame(byte[] data, Camera camera) {
  int width = camera.getParameters().getPreviewSize().width;
  int height = camera.getParameters().getPreviewSize().height;


  final int[] rgb = decodeYUV420SP(data, width, height);

  Bitmap bmp = Bitmap.createBitmap(rgb, width, height,Bitmap.Config.ARGB_8888);

  String filename="/sdcard/file" + (index++)+ ".jpg"; 
  FileOutputStream out;
  out = new FileOutputStream(filename);
  bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
  out.flush();
  out.close();
  out=null;

 }

Ici est l'une des méthodes que j'ai essayé de convertir les couleurs(à partir de ce conseil, je crois)

public int[] decodeYUV420SP( byte[] yuv420sp, int width, int height) {   
final int frameSize = width * height;   
int rgb[]=new int[width*height];   
for (int j = 0, yp = 0; j < height; j++) {   
int uvp = frameSize + (j >> 1) * width, u = 0, v = 0;   
for (int i = 0; i < width; i++, yp++) {   
int y = (0xff & ((int) yuv420sp[yp])) - 16;   
if (y < 0) y = 0;   
if ((i & 1) == 0) {   
v = (0xff & yuv420sp[uvp++]) - 128;   
u = (0xff & yuv420sp[uvp++]) - 128;   
}   
int y1192 = 1192 * y;   
int r = (y1192 + 1634 * v);   
int g = (y1192 - 833 * v - 400 * u);   
int b = (y1192 + 2066 * u);   
if (r < 0) r = 0; else if (r > 262143) r = 262143;   
if (g < 0) g = 0; else if (g > 262143) g = 262143;   
if (b < 0) b = 0; else if (b > 262143) b = 262143;   
rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) &    
0xff00) | ((b >> 10) & 0xff);   
}   
}   
return rgb;   
} 

Le problème est que l'image semble toujours comme trois étranges vert des photos"...
J'ai ama nouvel utilisateur donc je ne peux pas le poster:(

Je ne sais pas si elle a quelque chose à voir avec la taille ou quoi, mais je suis coincé...
Pouvez-vous me soutenir?

Dans le cas où il aide, il y a une discussion à ce propos dans le stackoverflow.com/questions/12345415/... et stackoverflow.com/questions/9325861/...

OriginalL'auteur androdevo | 2011-01-22