第一次写博客,之前一直是没有写博客的习惯。希望多多支持。
言归正传。
最近在做一个项目,需要自定义一个拍照功能。做完后发现,使用前置摄像头拍照,保存到本地以后,去相册查看发现保存的是原图。效果:拍的IX保存后是XI.
按道理来说这样是没有问题的,拍的什么保存的就是什么。这样是没问题的。但是总觉得很是别扭。
于是找了很多有关拍照保存图片的文章。也么有找到自己想要的。
最后在一篇博客中看到这样一个效果(实现镜像效果)的文章:http://blog.csdn.net/lovoo/article/details/51429563
灵机一动,将拍照后的图片转成镜像保存,结果就真的实现了,问题也就解决了。
最后就加了两行代码问题就解决了。记录下希望帮助更多人。有什么好的方式也希望多多指点。
//镜子效果 matrix.setScale(-1, 1); matrix.postTranslate(bitmap.getWidth(), 0);
下面是我项目里面的主要代码:
try { if (cameraPosition == 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); Matrix matrix = new Matrix(); //镜子效果 matrix.setScale(-1, 1); matrix.postTranslate(bitmap.getWidth(), 0); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth() , bitmap.getHeight(), matrix, true); saveImageToGallery(getBaseContext(), bitmap); } else { // 获取Jpeg图片,并保存在sd卡上 String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(Environment.getExternalStorageDirectory(), fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(data); fos.close(); // 其次把文件插入到系统图库 MediaStore.Images.Media.insertImage(CameraActivity.this.getContentResolver() , file.getAbsolutePath(), fileName, null); // 最后通知图库更新 CameraActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE , Uri.parse("file://" + file))); } mCamera.stopPreview(); mCamera.startPreview(); } catch (Exception e) { Log.d(TAG, "保存图片失败:::" + e.getLocalizedMessage()); }