public static ThumbnailInfo MakeThumbnail(Bitmap origin, ImageMeta meta, ExifOrientations orientation,
                                                  string attachmentId, Driver driver, string origFileName)
        {
            Bitmap thumbnail = null;

            if (meta == ImageMeta.Square)
            {
                thumbnail = MakeSquareThumbnail(origin);
            }
            else
            {
                thumbnail = ImageHelper.ScaleBasedOnLongSide(origin, (int)meta);
            }

            try
            {
                if (orientation != ExifOrientations.Unknown)
                {
                    ImageHelper.CorrectOrientation(orientation, thumbnail);
                }
                else
                {
                    ImageHelper.CorrectOrientation(ImageHelper.ImageOrientation(origin), thumbnail);
                }
            }
            catch (System.Runtime.InteropServices.ExternalException ex)
            {
                logger.ErrorFormat("Unable to correct orientation of image {0}", origFileName);
                logger.Error("External exception", ex);
            }

            ImageSaveStrategy imageStrategy  = GetImageSaveStrategy(Path.GetExtension(origFileName));
            SavedResult       savedThumbnail = imageStrategy.Save(thumbnail, attachmentId, meta, driver);

            return(new ThumbnailInfo
            {
                saved_file_name = savedThumbnail.FileName,
                file_name = origFileName,
                width = thumbnail.Width,
                height = thumbnail.Height,
                file_size = savedThumbnail.SavedRawData.Length,
                mime_type = savedThumbnail.MimeType,
                modify_time = DateTime.UtcNow,
                url = "/v2/attachments/view/?object_id=" + attachmentId +
                      "&image_meta=" + meta.ToString().ToLower(),
                RawData = savedThumbnail.SavedRawData
            });
        }
        public SavedResult Save(Bitmap img, string attchId, ImageMeta meta, Driver driver)
        {
            using (MemoryStream m = new MemoryStream())
            {
                img.Save(m, ImageFormat.Png);

                SavedResult savedResult = new SavedResult
                {
                    SavedRawData = m.ToArray(),
                    FileName     = string.Format("{0}_{1}.png", attchId, meta.ToString().ToLower()),
                    MimeType     = "image/png"
                };

                new FileStorage(driver).SaveFile(savedResult.FileName, new ArraySegment <byte>(savedResult.SavedRawData));

                return(savedResult);
            }
        }
        public SavedResult Save(Bitmap img, string attchId, ImageMeta meta, Driver driver)
        {
            using (MemoryStream m = new MemoryStream())
            {
                EncoderParameters encodeParams = new EncoderParameters(1);
                encodeParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)85);
                img.Save(m, ImageHelper.JpegCodec, encodeParams);

                SavedResult savedResult = new SavedResult
                {
                    SavedRawData = m.ToArray(),
                    FileName     = string.Format("{0}_{1}.jpeg", attchId, meta.ToString().ToLower()),
                    MimeType     = "image/jpeg"
                };

                new FileStorage(driver).SaveFile(savedResult.FileName, new ArraySegment <byte>(savedResult.SavedRawData));

                return(savedResult);
            }
        }