Android 设置相机拍摄的照片的大小
是否有任何方法可以不断设置由我自己的相机应用程序拍摄的照片(如256x256)的分辨率。这是一些代码,谢谢Android 设置相机拍摄的照片的大小,android,Android,是否有任何方法可以不断设置由我自己的相机应用程序拍摄的照片(如256x256)的分辨率。这是一些代码,谢谢 SurfaceView cameraView; SurfaceHolder surfaceHolder; Camera camera; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout
SurfaceView cameraView;
SurfaceHolder surfaceHolder;
Camera camera;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File mFile=new File("/sdcard/Galmix");
mFile.mkdir();
cameraView = (SurfaceView)this.findViewById(R.id.CameraView);
surfaceHolder = cameraView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
cameraView.setFocusable(true);
cameraView.setFocusableInTouchMode(true);
cameraView.setClickable(true);
cameraView.setOnClickListener(this);
}
public void onClick(View v){
camera.takePicture(null, null, this);
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
try{
OutputStream imageFileOS = new FileOutputStream(String.format("/sdcard/Galmix/%d.jpg",System.currentTimeMillis()));
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
} catch(FileNotFoundException e){
Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
t.show();
} catch (IOException e) {
Toast t = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
t.show();
}
camera.startPreview();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
camera.startPreview();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try{
camera.setPreviewDisplay(holder);
Camera.Parameters parameters = camera.getParameters();
if(this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE){
parameters.set("orientation", "portrait");
camera.setDisplayOrientation(90);
}
List<String> colorEffects = parameters.getSupportedColorEffects();
Iterator<String> cei = colorEffects.iterator();
while(cei.hasNext()){
String currentEffect = cei.next();
if(currentEffect.equals(Camera.Parameters.EFFECT_SOLARIZE)){
parameters.setColorEffect(Camera.Parameters.EFFECT_SOLARIZE); break;
}
}
camera.setParameters(parameters);
} catch(IOException e){
camera.release();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
}
SurfaceView-cameraView;
浮雕浮雕;
摄像机;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File mFile=新文件(“/sdcard/Galmix”);
mFile.mkdir();
cameraView=(SurfaceView)this.findviewbyd(R.id.cameraView);
surfaceHolder=cameraView.getHolder();
surfaceHolder.setType(surfaceHolder.SURFACE\u TYPE\u PUSH\u缓冲区);
surfaceHolder.addCallback(this);
cameraView.setFocusable(真);
cameraView.setFocusableInTouchMode(真);
cameraView.setClickable(真);
cameraView.setOnClickListener(这个);
}
公共void onClick(视图v){
拍照(空,空,这个);
}
@凌驾
公共void onPictureTaken(字节[]数据,摄像头){
试一试{
OutputStream imageFileOS=新文件OutputStream(String.format(“/sdcard/Galmix/%d.jpg”,System.currentTimeMillis());
imageFileOS.write(数据);
imageFileOS.flush();
imageFileOS.close();
}catch(filenotfounde异常){
Toast t=Toast.makeText(例如,getMessage(),Toast.LENGTH\u SHORT);
t、 show();
}捕获(IOE异常){
Toast t=Toast.makeText(例如,getMessage(),Toast.LENGTH\u SHORT);
t、 show();
}
camera.startPreview();
}
@凌驾
公共空白表面更改(表面文件夹持有者、整型格式、整型宽度、整型高度){
camera.startPreview();
}
@凌驾
已创建的公共空白表面(表面持有人){
camera=camera.open();
试一试{
摄像头。设置预览显示(支架);
Camera.Parameters=Camera.getParameters();
if(this.getResources().getConfiguration().orientation!=Configuration.orientation\u横向){
参数设置(“方向”、“纵向”);
摄像头。设置显示方向(90);
}
列出colorEffects=parameters.getSupportedColorEffects();
迭代器cei=colorEffects.Iterator();
while(cei.hasNext()){
字符串currentEffect=cei.next();
if(currentEffect.equals(Camera.Parameters.EFFECT_SOLARIZE)){
parameters.setColorEffect(Camera.parameters.EFFECT_SOLARIZE);中断;
}
}
设置参数(参数);
}捕获(IOE异常){
相机。释放();
}
}
@凌驾
公共空间表面覆盖(表面覆盖物持有人){
camera.stopPreview();
相机。释放();
}
有关信息,请参阅。要解决您的问题,您必须使用以下代码检查摄像头支持的尺寸:
Camera camera = Camera.open();
Parameters params = camera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();
我尝试过类似parameters.setPictureSize(256,256);。但它强制关闭。您需要使用获取支持的大小列表,并使用最接近您所需的大小。我已上载了我的代码,因此您可以告诉我将这些行放在哪里吗?我似乎不明白。看,我在这里回答了:我不知道这些行放在哪里。请在
cameraView.setClickable(true)之后重试代码>
setPictureSize(int width, int height);