Exemplo n.º 1
0
        private static String ResizeToBigSize(byte[] imageData, int contactID, bool uploadOnly, string tmpDirName)
        {
            var resizeWorkerItem = new ResizeWorkerItem
                {
                    ContactID = contactID,
                    UploadOnly = uploadOnly,
                    RequireFotoSize = new[] {_bigSize},
                    ImageData = imageData,
                    DataStore = Global.GetStore(),
                    TmpDirName = tmpDirName
                };

            ExecResizeImage(resizeWorkerItem);

            if (!uploadOnly)
            {
                return FromCache(contactID, _bigSize);
            }
            else if (String.IsNullOrEmpty(tmpDirName))
            {
                return FromDataStore(contactID, _bigSize, true, null);
            }
            else
            {
                return FromDataStore(_bigSize, tmpDirName);
            }
        }
Exemplo n.º 2
0
        private static void ExecGenerateThumbnail(byte[] imageData, int contactID, bool uploadOnly, string tmpDirName)
        {
            var resizeWorkerItem = new ResizeWorkerItem
                {
                    ContactID = contactID,
                    UploadOnly = uploadOnly,
                    RequireFotoSize = new[] {_mediumSize, _smallSize},
                    ImageData = imageData,
                    DataStore = Global.GetStore(),
                    TmpDirName = tmpDirName
                };

            if (!ResizeQueue.GetItems().Contains(resizeWorkerItem))
                ResizeQueue.Add(resizeWorkerItem);

            if (!ResizeQueue.IsStarted) ResizeQueue.Start(ExecResizeImage);
        }
Exemplo n.º 3
0
        private static void ExecResizeImage(ResizeWorkerItem resizeWorkerItem)
        {
            foreach (var fotoSize in resizeWorkerItem.RequireFotoSize)
            {
                var data = resizeWorkerItem.ImageData;
                using (var stream = new MemoryStream(data))
                using (var img = new Bitmap(stream))
                {
                    var imgFormat = img.RawFormat;
                    if (fotoSize != img.Size)
                    {
                        using (var img2 = CommonPhotoManager.DoThumbnail(img, fotoSize, false, false, false))
                        {
                            data = CommonPhotoManager.SaveToBytes(img2, Global.GetImgFormatName(imgFormat));
                        }
                    }
                    else
                    {
                        data = Global.SaveToBytes(img);
                    }

                    var fileExtension = String.Concat("." + Global.GetImgFormatName(imgFormat));

                    var photoPath = !resizeWorkerItem.UploadOnly
                                        ? BuildFilePath(resizeWorkerItem.ContactID, fotoSize, fileExtension)
                                        : BuildFileTmpPath(resizeWorkerItem.ContactID, fotoSize, fileExtension, resizeWorkerItem.TmpDirName);

                    using (var fileStream = new MemoryStream(data))
                    {
                        var photoUri = resizeWorkerItem.DataStore.Save(photoPath, fileStream).ToString();
                        photoUri = String.Format("{0}?cd={1}", photoUri, DateTime.UtcNow.Ticks);

                        if (!resizeWorkerItem.UploadOnly)
                        {
                            ToCache(resizeWorkerItem.ContactID, photoUri, fotoSize);
                        }
                    }
                }
            }
        }