そのため、fileOutputStream を使用して写真を sd カードに保存します。画像は jpeg 用にフォーマットされていますが、画像が歪んで保存されます。サムネイル画像は画像の正しい表現であるため、これは奇妙ですが、開くと一連の水平線になります。
ここに私のコードからのいくつかのスニペットがあります:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
if(previewing){
camera.stopPreview();
previewing=false;
}
if(camera!=null){
try{
camera.setPreviewDisplay(surfaceHolder);
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
camera.startPreview();
previewing=true;
} catch(IOException e){}
}
}
と
@Override
public void onPictureTaken(byte[] data, Camera camera) {
OutputStream outputStream;
try{
outputStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis())); //to sd card
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
};
画像 (水平方向に歪んだ jpeg と一緒にされたサムネイル) は、現時点ではサーバーにアップロードされていません。そうでない場合は、後で写真をアップロードできます。