/// <summary>
 /// Scale a bitmap to a max dimension, maintaining the original aspect ratio
 /// </summary>
 /// <param name="source_bitmap"></param>
 /// <param name="max_dimension_value"></param>
 /// <returns>Scaled System.Drawing.Bitmap</returns>
 public static Bitmap Scale(Bitmap source_bitmap, int max_dimension_value)
 {
     try
     {
         System.Drawing.Size new_size = InternalTools.GetScaledSize(source_bitmap, max_dimension_value);
         return(BitmapTools.Resize(source_bitmap, new_size.Width, new_size.Height));
     }
     catch (Exception e)
     {
         throw new ImagingTools.MediaToolsGenericException(
                   "Save_Bitmap.Save(Bitmap source_bitmap, FileInfo saved_bitmap_file_info)",
                   e
                   );
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="source_bitmap"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public static Bitmap GetBitmapThumbnail(Bitmap source_bitmap, int thumbnail_dimension, DimensionType apply_to)
        {
            float bitmap_width  = (float)source_bitmap.Width;
            float bitmap_height = (float)source_bitmap.Height;

            float thumbnail_width  = 0f;
            float thumbnail_height = 0f;

            if (apply_to == DimensionType.Height)
            {
                thumbnail_height = thumbnail_dimension;
                thumbnail_width  = bitmap_width * thumbnail_height / bitmap_height;
            }
            else
            {
                thumbnail_width  = thumbnail_dimension;
                thumbnail_height = bitmap_height * thumbnail_width / bitmap_width;
            }
            return(BitmapTools.Resize(source_bitmap, thumbnail_width, thumbnail_height));
        }