/// <summary>
        /// Save UIImage into directory
        /// </summary>
        /// <param name="image"></param>
        void Save(UIKit.UIImage image)
        {
            var documentsDirectory = Environment.GetFolderPath
                                         (Environment.SpecialFolder.Personal);
            var directoryname = Path.Combine(documentsDirectory, "FolderName");

            Directory.CreateDirectory(directoryname);

            string jpgFile = System.IO.Path.Combine(directoryname, "image.jpg");

            Foundation.NSData  imgData = image.AsJPEG();
            Foundation.NSError err     = null;
            if (imgData.Save(jpgFile, false, out err))
            {
                Console.WriteLine("saved as" + jpgFile);
            }
            else
            {
                Console.WriteLine("not saved as " + jpgFile + "because" + err.LocalizedDescription);
            }
            var alert = UIAlertController.Create("Saved Location", jpgFile, UIAlertControllerStyle.Alert);

            alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
            ShowViewController(alert, null);
        }
Beispiel #2
0
        /// <summary>
        /// Takes a bundled asset (like a .png file), converts it to a c# memory stream and returns it.
        /// </summary>
        /// <returns>The to stream.</returns>
        /// <param name="assetPath">Asset path.</param>
        public static MemoryStream AssetToStream(string assetPath)
        {
            #if __IOS__
            Foundation.NSData data = Foundation.NSData.FromFile(assetPath);

            byte[] dataBytes = new byte[data.Length];
            System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));

            return(new MemoryStream(dataBytes));
            #endif

            #if __ANDROID__
            try
            {
                System.IO.Stream stream = Rock.Mobile.PlatformSpecific.Android.Core.Context.Assets.Open(assetPath);

                MemoryStream memStream = new MemoryStream( );
                stream.CopyTo(memStream);

                // reset the memstream position
                memStream.Position = 0;

                stream.Dispose( );
                stream = null;

                return(memStream);
            }
            catch
            {
                return(null);
            }
            #endif
        }
Beispiel #3
0
        public static Dictionary <string, object> NSDictToPureDict(Foundation.NSDictionary nsDict)
        {
            if (nsDict == null)
            {
                return(null);
            }
            Foundation.NSError  error;
            Foundation.NSData   jsonData     = Foundation.NSJsonSerialization.Serialize(nsDict, (Foundation.NSJsonWritingOptions) 0, out error);
            Foundation.NSString jsonNSString = Foundation.NSString.FromData(jsonData, Foundation.NSStringEncoding.UTF8);
            string jsonString = jsonNSString.ToString();

            return(Json.Deserialize(jsonString) as Dictionary <string, object>);
        }
 /// <summary>
 /// Convert byte array into UIImage
 /// </summary>
 /// <param name="bytes"></param>
 /// <returns></returns>
 private UIKit.UIImage ImageFromBytes(byte[] bytes)
 {
     try
     {
         Foundation.NSData data  = Foundation.NSData.FromArray(bytes);
         UIKit.UIImage     image = UIImage.LoadFromData(data);
         UIGraphics.EndImageContext();
         return(image);
     }
     catch (Exception)
     {
         return(null);
     }
 }
        public static void TestCapture()
        {
            Foundation.NSNumber mainScreen = (Foundation.NSNumber)AppKit.NSScreen.MainScreen.DeviceDescription["NSScreenNumber"];

            using (CoreGraphics.CGImage cgImage = CreateImage(mainScreen.UInt32Value))
            {
                // https://stackoverflow.com/questions/17334786/get-pixel-from-the-screen-screenshot-in-max-osx/17343305#17343305

                // Get byte-array from CGImage
                // https://gist.github.com/zhangao0086/5fafb1e1c0b5d629eb76

                AppKit.NSBitmapImageRep bitmapRep = new AppKit.NSBitmapImageRep(cgImage);

                // var imageData = bitmapRep.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: [:])
                Foundation.NSData imageData = bitmapRep.RepresentationUsingTypeProperties(AppKit.NSBitmapImageFileType.Png);

                long   len   = imageData.Length;
                byte[] bytes = new byte[len];
                System.Runtime.InteropServices.GCHandle pinnedArray = System.Runtime.InteropServices.GCHandle.Alloc(bytes, System.Runtime.InteropServices.GCHandleType.Pinned);
                System.IntPtr pointer = pinnedArray.AddrOfPinnedObject();
                // Do your stuff...
                imageData.GetBytes(pointer, new System.IntPtr(len));
                pinnedArray.Free();

                using (AppKit.NSImage nsImage = new AppKit.NSImage(cgImage, new System.Drawing.SizeF(cgImage.Width, cgImage.Height)))
                {
                    // ImageView.Image = nsImage;
                    // And now ? How to get the image bytes ?

                    // https://theconfuzedsourcecode.wordpress.com/2016/02/24/convert-android-bitmap-image-and-ios-uiimage-to-byte-array-in-xamarin/
                    // https://stackoverflow.com/questions/5645157/nsimage-from-byte-array
                    // https://stackoverflow.com/questions/53060723/nsimage-source-from-byte-array-cocoa-app-xamarin-c-sharp
                    // https://gist.github.com/zhangao0086/5fafb1e1c0b5d629eb76
                    // https://www.quora.com/What-is-a-way-to-convert-UIImage-to-a-byte-array-in-Swift?share=1
                    // https://stackoverflow.com/questions/17112314/converting-uiimage-to-byte-array
                } // End Using nsImage
            }     // End Using cgImage
        }         // End Sub TestCapture
Beispiel #6
0
 public static void SetDeviceToken(Foundation.NSData token)
 {
     deviceToken = token;
 }
Beispiel #7
0
        // on select of Gallery
        private async Task galleryFunc()
        {
#if __IOS__
            var picker = new MediaPicker();
            try
            {
                if (!picker.PhotosSupported)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert("Photo Gallery is unavailable");
                }
                else
                {
                    var result = await picker.PickPhotoAsync();

                    if (result == null)
                    {
                        return;
                    }
                    else
                    {
                        var memoryStream = new MemoryStream();
                        UserDialogs.Instance.ShowLoading("Uploading Image...", MaskType.Black);
                        result.GetStream().CopyTo(memoryStream);
                        imageByteArray_BlaffrViewModel = memoryStream.ToArray();
                    }
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        ProfilePic = ImageSource.FromStream(() => result.GetStream());
                    });
                    UIKit.UIImage     image       = new UIKit.UIImage(result.Path);
                    UIKit.UIImage     highres     = image;
                    Foundation.NSData d           = highres.AsJPEG(0.7f);
                    Byte[]            myByteArray = new Byte[d.Length];
                    System.Runtime.InteropServices.Marshal.Copy(d.Bytes, myByteArray, 0, Convert.ToInt32(d.Length));
                    imageByteArray_BlaffrViewModel = myByteArray;
                    var p = ImageSource.FromStream(() => result.GetStream());
                    await this.OnPhotoReceived(result.Path, "");
                }
            }
            catch (Exception ex)
            {
                string x = ex.Message;
            }
#endif
#if __ANDROID__
            var picker = new CrossMedia();
            try
            {
                //if (!picker.IsLocalVoiceInteractionSupported)
                //{
                //    UserDialogs.Instance.HideLoading();
                //    UserDialogs.Instance.Alert("Photo Gallery is unavailable");
                //}
                //else
                //{
                //    var result = await picker();
                //    if (result == null)
                //        return;
                //    else
                //    {
                //        var memoryStream = new MemoryStream();
                //        UserDialogs.Instance.ShowLoading("Uploading Image...", MaskType.Black);
                //        result.GetStream().CopyTo(memoryStream);
                //        imageByteArray_ViewModel = memoryStream.ToArray();

                //    }
                //    Device.BeginInvokeOnMainThread(() =>
                //    {
                //        imageSource = ImageSource.FromStream(() => result.GetStream());
                //    });
                //    //UIKit.UIImage image = new UIKit.UIImage(result.Path);
                //    //var highres = image;
                //    //var d = highres.AsJPEG(0.7f);
                //    //Byte[] myByteArray = new Byte[d.Length];
                //    //System.Runtime.InteropServices.Marshal.Copy(d.Bytes, myByteArray, 0, Convert.ToInt32(d.Length));
                //    //imageByteArray_ViewModel = myByteArray;
                //    //var p = ImageSource.FromStream(() => result.GetStream());
                //    await this.OnPhotoReceived(result.Path, "");
                //}
            }
            catch (Exception ex)
            {
                string x = ex.Message;
            }
#endif
        }
Beispiel #8
0
 public virtual override void RegisteredForRemoteNotifications(AppKit.NSApplication application, Foundation.NSData deviceToken)
 {
 }
Beispiel #9
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            switch (servicePosition)
            {
            case 0:
                service = new CRFacebook("439557219752767", "7265db555fbf26606870451605e1ae37");
                break;

            case 1:
                service = new CRGitHub("ff2f6d88dd8a49366e30", "eeafe874a8b80599a09b5195022583fbda4ca2ad");
                break;

            case 2:
                service = new CRGooglePlus("141870010879-td4fdoobrsm6ecki2kvveki6kdauu4su.apps.googleusercontent.com", "", "com.cloudrail.unifiedsocialprofile:/oauth2redirect", "someState");
                ((CRGooglePlus)service).UseAdvancedAuthentication();
                break;

            case 3:
                service = new CRHeroku("d81a8071-ab2b-4a8b-8385-a83d70ed6095", "ece9f5b1-c977-4d85-b6fa-c0403cdcbdff");
                break;

            case 4:
                service = new CRInstagram("d714c3c872cb443e975d874922e66fcc", "ead73573c11c4a9e831460f0ff3bf164");
                break;

            case 5:
                service = new CRLinkedIn("[LinkedIn Client Identifier]", "[LinkedIn Client Secret]");
                break;

            case 6:
                service = new CRProductHunt("9e79858debc14d0aab52bcad4430cbea06645e6df43986d3fe65fa9e4a46db47", "c04c57684eaf498eda439ed077270b09ea3a34218b283c9a4a6fb8a6bc24e88f");
                break;

            case 7:
                service = new CRSlack("[Slack Client Identifier]", "[Slack Client Secret]");
                break;

            case 8:
                service = new CRTwitter("FW6M3WmjhyiT2AYsohDZHGDTw", "1Ts5gOmPzXUgeckMDPV0dSEuY51L77cJCYBfftQFu6kI9kv2dp");
                break;

            case 9:
                service = new CRMicrosoftLive("[Windows Live Client Identifier]", "[Windows Live Client Secret]");
                break;

            case 10:
                service = new CRYahoo("[Yahoo Client Identifier]", "[Yahoo Client Secret]");
                break;
            }

            new System.Threading.Thread(new System.Threading.ThreadStart(() =>
            {
                // run in background
                service.Login();
                String name           = service.GetFullName();
                String mail           = service.GetEmail();
                CRDateOfBirth dob     = service.GetDateOfBirth();
                String birthDate      = dob != null ? dob.Day + "." + dob.Month + "." + dob.Year : "";
                String description    = service.GetProfileDescription();
                String locale         = service.GetLocale();
                String id             = service.GetIdentifier();
                String imageUrlString = service.GetPictureURL();
                InvokeOnMainThread(() =>
                {
                    // manipulate UI controls
                    labelName.Text        = name;
                    labelMail.Text        = mail;
                    labelDateOfBirth.Text = birthDate;
                    labelDescription.Text = description;
                    labelLocale.Text      = locale;
                    labelId.Text          = id;

                    if (imageUrlString != null)
                    {
                        Foundation.NSUrl imageUrl   = new Foundation.NSUrl(imageUrlString);
                        Foundation.NSData imageData = Foundation.NSData.FromUrl(imageUrl);
                        UIImage image = new UIImage(imageData);

                        imageView.Image = image;
                    }
                });
            })).Start();
        }
Beispiel #10
0
 public abstract void SetDeviceToken(Foundation.NSData deviceToken);
Beispiel #11
0
 private static byte[] GetKeyData(Foundation.NSData keyData)
 {
     byte[] dataBytes = new byte[keyData.Length];
     System.Runtime.InteropServices.Marshal.Copy(keyData.Bytes, dataBytes, 0, Convert.ToInt32(keyData.Length));
     return(dataBytes);
 }