Пример #1
0
 /// <summary>
 /// Loads the avatar file asynchronously.
 /// </summary>
 /// <param name="code">Avatar unique code.</param>
 /// <param name="file">File type (e.g. head texture).</param>
 public static AsyncRequest <byte[]> LoadAvatarFileAsync(string code, AvatarFile file)
 {
     try {
         var filename = AvatarSdkMgr.Storage().GetAvatarFilename(code, file);
         return(LoadFileAsync(filename));
     } catch (Exception ex) {
         Debug.LogException(ex);
         var request = new AsyncRequest <byte[]> ();
         request.SetError(string.Format("Could not load {0}, reason: {1}", file, ex.Message));
         return(request);
     }
 }
Пример #2
0
        /// <summary>
        /// Converts avatar mesh from ply to obj format
        /// </summary>
        public static void AvatarPlyToObj(string avatarId, AvatarFile avatarMesh, AvatarFile avatarTexture, string objFile)
        {
            var plyFile        = AvatarSdkMgr.Storage().GetAvatarFilename(avatarId, avatarMesh);
            var srcTextureFile = AvatarSdkMgr.Storage().GetAvatarFilename(avatarId, avatarTexture);
            var dstTextureFile = Path.Combine(Path.GetDirectoryName(objFile), Path.GetFileNameWithoutExtension(objFile) + ".jpg");

            var returnCode = CreateMeshConverter().ConvertPlyModelToObj(plyFile, null, objFile, dstTextureFile);

            if (returnCode != 0)
            {
                Debug.LogErrorFormat("Unable convert avatar to obj. Error code: {0}", returnCode);
                return;
            }

            if (File.Exists(dstTextureFile))
            {
                File.Delete(dstTextureFile);
            }
            File.Copy(srcTextureFile, dstTextureFile);
        }
Пример #3
0
 public abstract string GetAvatarFilename(string avatarCode, AvatarFile file);
Пример #4
0
 public override string GetAvatarFilename(string avatarCode, AvatarFile file)
 {
     return(Path.Combine(GetAvatarDirectory(avatarCode), AvatarFilenames [file]));
 }
Пример #5
0
        // POST api/<controller>
        public void Post([FromBody] AvatarFile file)
        {
            var projectDir = AppDomain.CurrentDomain.BaseDirectory.Replace('\\', '/');

            projectDir += "assets/img/avatars/";


            string[] nums   = file.Buffer.Trim().Split(',');
            byte[]   buffer = new byte[nums.Length];

            for (int i = 0; i < nums.Length; i++)
            {
                buffer[i] = Convert.ToByte(nums[i]);
            }


            Image img;

            using (var bs = new MemoryStream(buffer))
            {
                img = Image.FromStream(bs);
            }

            var f = File.Create(projectDir + file.UserId.ToString() + ".jpg");

            try
            {
                f.Write(buffer, 0, buffer.Length);
                f.Flush();
            }
            catch (Exception e)
            {
                var se = e.ToString();
            }

            f.Close();
            f.Dispose();

            //int pixLenOst = buffer.Length % 3;
            //int pixelsLen = buffer.Length/3;

            //byte[][] pixels = new byte[buffer.Length/3][];

            //for (int i = 0; i < pixelsLen-pixLenOst; i++)
            //{
            //    pixels[i] = new byte[3] { buffer[i*3], buffer[i*3+1], buffer[i*3+2] };
            //}

            //var bitmap = new Bitmap(file.Width, file.Height);

            //for (int x = 0; x < file.Height; x++)
            //{
            //    for (int y = 0; y<file.Width; y++)
            //    {
            //        bitmap.SetPixel(y,x, Color.FromArgb(pixels[x + y][0], pixels[x + y][1], pixels[x + y][2]));
            //    }
            //}

            //img = Image.FromHbitmap(bitmap.GetHbitmap());
            //var f2 = File.Create("C:/Users/Necromant/Desktop/tests/some.jpg");

            //img.Save(f2, System.Drawing.Imaging.ImageFormat.Jpeg);

            //f2.Flush();
            //f2.Close();

            //var size = img.Size;
        }
Пример #6
0
 public EditAvatar(Guid userId, [CanBeNull] AvatarFile avatar)
 {
     UserId = userId;
     Avatar = avatar;
 }
Пример #7
0
 /// <summary>
 /// Helper method that automatically generates full path to file from file type and avatar id, and then calls
 /// SaveFileAsync.
 /// </summary>
 /// <param name="bytes">Binary file content.</param>
 /// <param name="code">Avatar code.</param>
 /// <param name="file">Avatar file type.</param>
 public static AsyncRequest <string> SaveAvatarFileAsync(byte[] bytes, string code, AvatarFile file)
 {
     try {
         var filename = AvatarSdkMgr.Storage().GetAvatarFilename(code, file);
         return(SaveFileAsync(bytes, filename));
     } catch (Exception ex) {
         Debug.LogException(ex);
         var request = new AsyncRequest <string> ("");
         request.SetError(string.Format("Could not save {0}, reason: {1}", file, ex.Message));
         return(request);
     }
 }
Пример #8
0
        /// <summary>
        /// Delete particular avatar file by type (e.g. zip mesh file after unzip).
        /// </summary>
        public static void DeleteAvatarFile(string avatarCode, AvatarFile file)
        {
            var path = AvatarSdkMgr.Storage().GetAvatarFilename(avatarCode, file);

            File.Delete(path);
        }
        public void Post([FromBody] AvatarFile file)
        {
            var projectDir = AppDomain.CurrentDomain.BaseDirectory.Replace('\\', '/');

            projectDir += "assets/img/avatars/";


            string[] nums   = file.Buffer.Trim().Split(',');
            byte[]   buffer = new byte[nums.Length];

            for (int i = 0; i < nums.Length; i++)
            {
                buffer[i] = Convert.ToByte(nums[i]);
            }


            Image img, croppedImg, resizedImg;

            using (var bs = new MemoryStream(buffer))
            {
                img = Image.FromStream(bs);
            }

            int hdelta = 0;
            int wdelta = 0;


            if (img.Width > img.Height)
            {
                wdelta = img.Width - img.Height;
            }
            else if (img.Width < img.Height)
            {
                hdelta = img.Height - img.Width;
            }


            var startPoint = new Point(wdelta / 2, hdelta / 2);
            var newImgSize = new Size(img.Width - wdelta, img.Height - hdelta);

            Rectangle cloneRect = new Rectangle(startPoint, newImgSize);


            croppedImg = cropImage(img, cloneRect);

            resizedImg = resizeImage(croppedImg, new Size(400, 400));


            using (var ms = new MemoryStream())
            {
                resizedImg.Save(ms, ImageFormat.Png);
                buffer = ms.ToArray();
            }


            var f = File.Create(projectDir + file.UserId.ToString() + ".png");

            try
            {
                f.Write(buffer, 0, buffer.Length);
                f.Flush();
            }
            catch (Exception e)
            {
                var se = e.ToString();
            }

            f.Close();
            f.Dispose();
        }