B
Büffel_re_22
Neues Mitglied
- 0
Servus Leute
Ich habe ein Problem. Die größe meines Bildes bleiben nicht wie eingestellt die gleiche Größe.
Aufgabe ist, dass die Parameter des PictureSize 2560x1920 sind. Wenn ich aber die Länge meines byte[] auslese steht da 355376.
Warum ist das so? Ich verstehe es nicht und finde nicht den Fehler. Ich finde auch keinen Bezug zwischen 4915200 (=2560x1920) und 355376. Wäre super wenn mir jemand helfen könnte.
Ich habe ein Problem. Die größe meines Bildes bleiben nicht wie eingestellt die gleiche Größe.
Aufgabe ist, dass die Parameter des PictureSize 2560x1920 sind. Wenn ich aber die Länge meines byte[] auslese steht da 355376.
Warum ist das so? Ich verstehe es nicht und finde nicht den Fehler. Ich finde auch keinen Bezug zwischen 4915200 (=2560x1920) und 355376. Wäre super wenn mir jemand helfen könnte.
Code:
...
public class Kamera extends Activity implements Callback{
SurfaceView mSurfaceView;
Camera mCamera;
boolean ontouchevent = false;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.camera_hardware);
mSurfaceView = (SurfaceView) findViewById(R.id.sv_hardware_kamera);
mSurfaceView.getHolder().addCallback(this);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
PictureCallback pc = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
try
{
System.out.println("Bild bekommen. es ist " + data.length + " lang");
Main.byte_bild = data;
ontouchevent = false;
finish();
}
catch(Exception e)
{
System.out.println(e.getStackTrace());
}
}
};
System.out.println("on touch event");
if (!ontouchevent)
{
ontouchevent = true;
mCamera.takePicture(null, null, pc);
}
return super.onTouchEvent(event);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
...
}
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
Parameters parameter = mCamera.getParameters();
parameter.setJpegQuality(100);
//parameter.setPictureSize(Main.picture_width, Main.picture_height);
List<Camera.Size> s = mCamera.getParameters().getSupportedPictureSizes();
Camera.Size best_size = null;
for(Camera.Size ding : s)
{
if (best_size == null)
{
best_size = ding;
}else
{
if(best_size.height < ding.height)
{
best_size = ding;
}
}
}
Main.picture_height = best_size.height;
Main.picture_width = best_size.width;
System.out.println("Die beste Picture Qualität ist: " + best_size.width + "x" + best_size.height);
parameter.setPictureSize(best_size.width, best_size.height);
parameter.setPictureFormat(PixelFormat.JPEG);
mCamera.setParameters(parameter);
parameter = mCamera.getParameters();
System.out.println(parameter.getPictureFormat());
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
...
}