Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public async void OnPictureTaken(byte[] data, Android.Hardware.Camera camera)
- {
- var targetWidth = 1080;
- var cameraParams = camera.GetParameters();
- var ratio = ((decimal)cameraParams.PictureSize.Height) / cameraParams.PictureSize.Width;
- var w = cameraParams.PictureSize.Width >= targetWidth
- ? targetWidth
- : cameraParams.PictureSize.Width;
- var h = cameraParams.PictureSize.Width >= targetWidth
- ? (int)Math.Floor(targetWidth * ratio)
- : cameraParams.PictureSize.Height;
- Java.IO.File sdDir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures);
- Java.IO.File pictureFileDir = new Java.IO.File(sdDir, "RDCCameraImages");
- if (!pictureFileDir.Exists() && !pictureFileDir.Mkdirs())
- {
- return;
- }
- String photoFile = "Picture_" + "aaa.jpg";
- String imageFilePath = pictureFileDir.Path + Java.IO.File.Separator + photoFile;
- Java.IO.File pictureFile = new Java.IO.File(imageFilePath);
- FileOutputStream fos = new FileOutputStream(pictureFile);
- fos.Write(data);
- fos.Close();
- ExifInterface exif;
- ExifInterface ei = new ExifInterface(pictureFile.AbsolutePath);
- int orientation = ei.GetAttributeInt(ExifInterface.TagOrientation, (int)Android.Media.Orientation.Normal);
- var imageStream = new System.IO.MemoryStream();
- using (var bm = BitmapFactory.DecodeByteArray(data, 0, data.Length))
- using (var scaled = Bitmap.CreateScaledBitmap(bm, w, h, false))
- {
- Bitmap rotatedBitmap = null;
- switch (orientation)
- {
- case (int)Android.Media.Orientation.Rotate90:
- rotatedBitmap = rotateImage(scaled, 90);
- break;
- case (int)Android.Media.Orientation.Rotate180:
- rotatedBitmap = rotateImage(scaled, 180);
- break;
- case (int)Android.Media.Orientation.Rotate270:
- rotatedBitmap = rotateImage(scaled, 270);
- break;
- case (int)Android.Media.Orientation.Normal:
- rotatedBitmap = scaled;
- break;
- default:
- rotatedBitmap = scaled;
- break;
- }
- await scaled.CompressAsync(Bitmap.CompressFormat.Jpeg, 90, imageStream);
- await imageStream.FlushAsync();
- }
- }
Add Comment
Please, Sign In to add comment