public void SetImageRotateBitmapResetBase(RotateBitmap bitmap, bool resetSupp) { int viewWidth = Width; if (viewWidth <= 0) { onLayoutRunnable = () => { SetImageRotateBitmapResetBase(bitmap, resetSupp); }; return; } if (bitmap.Bitmap != null) { getProperBaseMatrix(bitmap, baseMatrix); setImageBitmap(bitmap.Bitmap, bitmap.Rotation); } else { baseMatrix.Reset(); base.SetImageBitmap(null); } if (resetSupp) { suppMatrix.Reset(); } ImageMatrix = GetImageViewMatrix(); this.maxZoom = CalculateMaxZoom(); }
/// <summary> /// Setup the base matrix so that the image is centered and scaled properly. /// </summary> private void getProperBaseMatrix(RotateBitmap bitmap, Matrix matrix) { float viewWidth = Width; float viewHeight = Height; float w = bitmap.Width; float h = bitmap.Height; int rotation = bitmap.Rotation; matrix.Reset(); // We limit up-scaling to 2x otherwise the result may look bad if it's // a small icon. float widthScale = Math.Min(viewWidth / w, 2.0f); float heightScale = Math.Min(viewHeight / h, 2.0f); float scale = Math.Min(widthScale, heightScale); matrix.PostConcat(bitmap.GetRotateMatrix()); matrix.PostScale(scale, scale); matrix.PostTranslate( (viewWidth - w * scale) / 2F, (viewHeight - h * scale) / 2F); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RequestWindowFeature(Android.Views.WindowFeatures.NoTitle); SetContentView(Resource.Layout.cropimage); imageView = FindViewById <CropImageView>(Resource.Id.image); showStorageToast(this); Bundle extras = Intent.Extras; if (extras != null) { imagePath = extras.GetString("image-path"); saveUri = getImageUri(imagePath); if (extras.GetString(MediaStore.ExtraOutput) != null) { saveUri = getImageUri(extras.GetString(MediaStore.ExtraOutput)); } bitmap = getBitmap(imagePath); aspectX = extras.GetInt("aspectX"); aspectY = extras.GetInt("aspectY"); outputX = extras.GetInt("outputX"); outputY = extras.GetInt("outputY"); scale = extras.GetBoolean("scale", true); scaleUp = extras.GetBoolean("scaleUpIfNeeded", true); if (extras.GetString("outputFormat") != null) { outputFormat = Bitmap.CompressFormat.ValueOf(extras.GetString("outputFormat")); } } if (bitmap == null) { Finish(); return; } Window.AddFlags(WindowManagerFlags.Fullscreen); FindViewById <Button>(Resource.Id.discard).Click += (sender, e) => { SetResult(Result.Canceled); Finish(); }; //FindViewById<Button>(Resource.Id.save).Click += async delegate { onSaveClicked(); }; FindViewById <Button>(Resource.Id.save).Click += async delegate { if (Saving) { return; } Saving = true; var r = Crop.CropRect; int width = r.Width(); int height = r.Height(); Bitmap croppedImage = Bitmap.CreateBitmap(width, height, Bitmap.Config.Rgb565); { Canvas canvas = new Canvas(croppedImage); Rect dstRect = new Rect(0, 0, width, height); canvas.DrawBitmap(bitmap, r, dstRect, null); } // If the output is required to a specific size then scale or fill if (outputX != 0 && outputY != 0) { if (scale) { // Scale the image to the required dimensions Bitmap old = croppedImage; croppedImage = Util.transform(new Matrix(), croppedImage, outputX, outputY, scaleUp); if (old != croppedImage) { old.Recycle(); } } else { // Don't scale the image crop it to the size requested. // Create an new image with the cropped image in the center and // the extra space filled. Bitmap b = Bitmap.CreateBitmap(outputX, outputY, Bitmap.Config.Rgb565); Canvas canvas = new Canvas(b); Rect srcRect = Crop.CropRect; Rect dstRect = new Rect(0, 0, outputX, outputY); int dx = (srcRect.Width() - dstRect.Width()) / 2; int dy = (srcRect.Height() - dstRect.Height()) / 2; // If the srcRect is too big, use the center part of it. srcRect.Inset(Math.Max(0, dx), Math.Max(0, dy)); // If the dstRect is too big, use the center part of it. dstRect.Inset(Math.Max(0, -dx), Math.Max(0, -dy)); // Draw the cropped bitmap in the center canvas.DrawBitmap(bitmap, srcRect, dstRect, null); // Set the cropped bitmap as the new bitmap croppedImage.Recycle(); croppedImage = b; } } // Return the cropped image directly or save it to the specified URI. Bundle myExtras = Intent.Extras; if (myExtras != null && (myExtras.GetParcelable("data") != null || myExtras.GetBoolean("return-data"))) { Bundle extrasas = new Bundle(); extras.PutParcelable("data", croppedImage); SetResult(Result.Ok, (new Intent()).SetAction("inline-data").PutExtras(extrasas)); Finish(); } else { //Toast.MakeText(Application.Context, saveUri.ToString(), ToastLength.Long).Show(); //Toast.MakeText(Application.Context, "Upload Complete", ToastLength.Long).Show(); //Upload to Azure ISQLiteConnection connacc = null; ISQLiteConnectionFactory factoryacc = new MvxDroidSQLiteConnectionFactory(); var sqlitediracc = new Java.IO.File(global::Android.OS.Environment.GetExternalStoragePublicDirectory(global::Android.OS.Environment.DirectoryPictures), "Boruto"); string filenameactionacc = sqlitediracc.Path + "/mysqlitesas.db"; connacc = factoryacc.Create(filenameactionacc); connacc.CreateTable <Azurecon>(); var useridconnc = ""; foreach (var eu in connacc.Table <Azurecon>().Where(eu => eu.Sastring == "using")) { useridconnc = eu.UserId; } connacc.Close(); //myuserid = "115708452302383620142"; useridconnc = useridconnc.Replace("@", ""); useridconnc = useridconnc.Replace(".", ""); var myurl = "http://93.118.34.239:8888/" + useridconnc; Uri azureuri = new Uri(myurl); HttpWebRequest request = new HttpWebRequest(azureuri); request.Method = "GET"; HttpWebResponse response = request.GetResponse() as HttpWebResponse; try { using (StreamReader sr = new StreamReader(response.GetResponseStream())) { string responseString = sr.ReadToEnd(); Toast.MakeText(this, saveUri.ToString(), ToastLength.Short).Show(); try { await UseContainerSAS(responseString, saveUri.ToString()); } catch { } } } catch { } //End Upload to Azure Bitmap b = croppedImage; BackgroundJob.StartBackgroundJob(this, null, "Saving image", () => saveOutput(b), mHandler); } }; FindViewById <Button>(Resource.Id.rotateLeft).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, -90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; FindViewById <Button>(Resource.Id.rotateRight).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, 90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; imageView.SetImageBitmapResetBase(bitmap, true); addHighlightView(); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RequestWindowFeature(Android.Views.WindowFeatures.NoTitle); SetContentView(Resource.Layout.cropimage); imageView = FindViewById <CropImageView>(Resource.Id.image); showStorageToast(this); Bundle extras = Intent.Extras; if (extras != null) { imagePath = extras.GetString("image-path"); saveUri = getImageUri(imagePath); if (extras.GetString(MediaStore.ExtraOutput) != null) { saveUri = getImageUri(extras.GetString(MediaStore.ExtraOutput)); } bitmap = getBitmap(imagePath); aspectX = extras.GetInt("aspectX"); aspectY = extras.GetInt("aspectY"); outputX = extras.GetInt("outputX"); outputY = extras.GetInt("outputY"); scale = extras.GetBoolean("scale", true); scaleUp = extras.GetBoolean("scaleUpIfNeeded", true); if (extras.GetString("outputFormat") != null) { outputFormat = Bitmap.CompressFormat.ValueOf(extras.GetString("outputFormat")); } } if (bitmap == null) { Finish(); return; } Window.AddFlags(WindowManagerFlags.Fullscreen); FindViewById <Button>(Resource.Id.discard).Click += (sender, e) => { SetResult(Result.Canceled); Finish(); }; FindViewById <Button>(Resource.Id.save).Click += (sender, e) => { onSaveClicked(); }; FindViewById <Button>(Resource.Id.rotateLeft).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, -90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; FindViewById <Button>(Resource.Id.rotateRight).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, 90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; imageView.SetImageBitmapResetBase(bitmap, true); addHighlightView(); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RequestWindowFeature(Android.Views.WindowFeatures.NoTitle); SetContentView(Resource.Layout.cropimage); imageView = FindViewById<CropImageView>(Resource.Id.image); showStorageToast(this); Bundle extras = Intent.Extras; if (extras != null) { imagePath = extras.GetString("image-path"); saveUri = getImageUri(imagePath); if (extras.GetString(MediaStore.ExtraOutput) != null) { saveUri = getImageUri(extras.GetString(MediaStore.ExtraOutput)); } bitmap = getBitmap(imagePath); aspectX = extras.GetInt("aspectX"); aspectY = extras.GetInt("aspectY"); outputX = extras.GetInt("outputX"); outputY = extras.GetInt("outputY"); scale = extras.GetBoolean("scale", true); scaleUp = extras.GetBoolean("scaleUpIfNeeded", true); if (extras.GetString("outputFormat") != null) { outputFormat = Bitmap.CompressFormat.ValueOf(extras.GetString("outputFormat")); } } if (bitmap == null) { Finish(); return; } Window.AddFlags(WindowManagerFlags.Fullscreen); FindViewById<Button>(Resource.Id.discard).Click += (sender, e) => { SetResult(Result.Canceled); Finish(); }; FindViewById<Button>(Resource.Id.save).Click += (sender, e) => { onSaveClicked(); }; FindViewById<Button>(Resource.Id.rotateLeft).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, -90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; FindViewById<Button>(Resource.Id.rotateRight).Click += (o, e) => { bitmap = Util.rotateImage(bitmap, 90); RotateBitmap rotateBitmap = new RotateBitmap(bitmap); imageView.SetImageRotateBitmapResetBase(rotateBitmap, true); addHighlightView(); }; imageView.SetImageBitmapResetBase(bitmap, true); addHighlightView(); }