大佬教程收集整理的这篇文章主要介绍了android – 用相机拍照并将其保存在特定文件夹中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须说我已经建立了自己的相机但仍然不知道如何保存图像.
这是它的样子:
public class EditPhoto extends Activity implements SurfaceHolder.CallBACk,OnClickListener { static final int FOTO_MODE = 0; private static final String TAG = "CameraTest"; Camera mCamera; Boolean mPreviewRunning = false; private Context mContext = this; public void onCreate(Bundle iciclE) { super.onCreate(iciclE); //doing things } @Override protected void onRestoreInstanceState(Bundle savedInstanceStatE) { super.onRestoreInstanceState(savedInstanceStatE); } Camera.PictureCallBACk mPictureCallBACk = new Camera.PictureCallBACk(){ public void onPictureTaken(byte[] imageData,Camera C) { if (imageData != null) { Intent mIntent = new Intent(); StoreByteImage(mContext,imageData,50,"Imagename"); mCamera.startPreview(); Bundle b = new Bundle(); b.putByteArray("imageData",imageData); Intent i = new Intent(mContext,ImageDisplayActivity.class); i.putExtras(b); startActivity(i); setResult(FOTO_MODE,mIntent); finish(); } } }; protected void onSaveInstanceState(Bundle outStatE) { super.onSaveInstanceState(outStatE); } protected void onStop() { Log.e(tag,"onStop"); super.onStop(); } public void surfaceCreated(SurfaceHolder holder) { Log.e(tag,"surfaceCreated"); mCamera = Camera.open(); } public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) { Log.e(tag,"surfaceChanged"); if (mPreviewRunning) { mCamera.stopPreview(); } Camera.Parameters p = mCamera.getParameters(); List<Size> sizes = p.getSupportedPictureSizes(); p.setPreviewSize(640,480); p.setPictureSize(213,350); mCamera.setParameters(p); try { mCamera.setPreviewDisplay(holder); } catch (IOException E) { // TODO Auto-generated catch block e.printStackTrace(); } mCamera.startPreview(); mPreviewRunning = true; } public void surfaceDestroyed(SurfaceHolder holder) { Log.e(tag,"surfaceDestroyed"); mCamera.stopPreview(); mPreviewRunning = false; mCamera.release(); } private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; public void onClick(View arg0) { mCamera.takePicture(null,mPictureCallBACk,mPictureCallBACk); } public static Boolean StoreByteImage(Context mContext,byte[] imageData,int quality,String expName) { File sdImageMainDirectory = new File("/sdcard"); FiLeoutputStream fiLeoutputStream = null; String nameFile; try { BitmapFactory.options options=new BitmapFactory.options(); options.inSampleSize = 5; Bitmap myImage = BitmapFactory.decodeByteArray(imageData,imageData.length,options); fiLeoutputStream = new FiLeoutputStream(sdImageMainDirectory.toString() +"/image.jpg"); bufferedoutputstream bos = new bufferedoutputstream(fiLeoutputStream); myImage.compress(CompressFormat.JPEG,quality,bos); bos.flush(); bos.close(); } catch (FileNotFoundException E) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException E) { // TODO Auto-generated catch block e.printStackTrace(); } return true; } }
如果你能指出我正确的方向,我会赞美它.谢谢
编辑:
public class ImageViewActivity extends Activity { private String[] imageDirs; private Spinner dirSpinner; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.main); getDirs(); populateSpinner(); } private void populateSpinner() { dirSpinner = (Spinner) findViewById(R.id.dirSpinner); ArrayAdapter<String> dirAdapter = new ArrayAdapter<String>( getApplicationContext(),android.R.layout.simple_spinner_dropdown_item,imageDirs); dirAdapter .setDropDownViewresource(android.R.layout.simple_spinner_dropdown_item); dirSpinner.setAdapter(dirAdapter); dirSpinner.setOnItemSELEctedListener(new OnImageItemSELEctedListener()); } /** * Retrieves all the image files in the given directory. */ public File[] retrieveContents(String dirPath) { File parentDir = new File(dirPath); if (!parentDir.exists()) { return null; } if (!parentDir.isDirectory()) { return null; } File[] fileContents = null; FilenameFilter filter = new FilenameFilter(); fileContents = parentDir.listFiles(filter); filter = null; parentDir = null; return fileContents; } /** * Inner class to get images only. */ private class FilenameFilter implements FileFilter { @Override public Boolean accept(File dir) { return dir.getName().toLowerCase() .endsWith(".jpg;*.bR_208_11845@p;*.png;*.gif"); } } /** * Returns the names of sub-dirs in Images dir. */ private void getDirs() { String parentDir = Environment.getExternalStorageDirectory() + "/Images"; File[] imageFolders = new File(parentDir).listFiles(); ArrayList<String> dirList = new ArrayList<String>(); for (int i = 0; i < imageFolders.length; i++) { if (imageFolders[i].isDirectory()) { dirList.add(imageFolders[i].getName()); } } imageDirs = (String[]) dirList.toArray(new String[0]); } public class OnImageItemSELEctedListener implements OnItemSELEctedListener { public void onItemSELEcted(AdapterView<?> parent,View view,int position,long id) { Toast.makeText( parent.getContext(),"The dir is " + parent.getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show(); } @Override public void onNothingSELEcted(AdapterView<?> arg0) { } } }
以上是大佬教程为你收集整理的android – 用相机拍照并将其保存在特定文件夹中全部内容,希望文章能够帮你解决android – 用相机拍照并将其保存在特定文件夹中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。