我的应用程序捕获并将照片保存在特定目录中。问题是当我去画廊打开捕获。缩略图视图很完美,但是当用HTC播放器打开照片时,照片会被划伤/划伤。
我使用一个实现SurfaceHolder.Callback的Activity。
PictureCallback myJpeg = new PictureCallback() {
private boolean compress;
public void onPictureTaken(byte[] arg0, Camera arg1) {
File path = getPath();
File file = getName(path, imageNum);
imageNum ++;
try {
if(!path.exists())
path.mkdirs();
OutputStream imageFileOS = new FileOutputStream(file);
imageFileOS.write(arg0);
imageFileOS.close();
MediaScannerConnection.scanFile(getApplicationContext(),
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(imageNum < numDisp)
myCamera.startPreview();
else{
goToViewCapture(file);
}
}
};
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
try{
if(myPreviewRunning){
myCamera.stopPreview();
myPreviewRunning = false;
}
Camera.Parameters p = myCamera.getParameters();
p.setPreviewSize(width,height);
myCamera.setParameters(p);
myCamera.setPreviewDisplay(holder);
myCamera.startPreview();
myPreviewRunning = true;
}catch(Exception e){e.printStackTrace();}
}
public void surfaceCreated(SurfaceHolder holder) {
myCamera = Camera.open();
try {
Camera.Parameters parameters = myCamera.getParameters();
parameters.set("jpeg-quality", 70);
parameters.setPictureFormat(PixelFormat.JPEG);
myCamera.setParameters(parameters);
myCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
myCamera.release();
}
//myCamera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
myCamera.stopPreview();
myPreviewRunning = false;
myCamera.release();
myCamera = null;
}
感谢!!!
解决方案:
评论此行 - &gt; //p.setPreviewSize(width,height);