AspNet.StarterKits.Classifieds.BusinessLogicLayer.PhotosDB.ResizeImageFile C# (CSharp) Метод

ResizeImageFile() публичный статический Метод

public static ResizeImageFile ( byte imageFile, PhotoSize size ) : byte[]
imageFile byte
size PhotoSize
Результат byte[]
		public static byte[] ResizeImageFile(byte[] imageFile, PhotoSize size)
		{
			using (System.Drawing.Image original = System.Drawing.Image.FromStream(new MemoryStream(imageFile)))
			{
				int targetH, targetW;
				if (size == PhotoSize.Small || size == PhotoSize.Medium)
				{
					// regardless of orientation,
					// the *height* is constant for thumbnail images (UI constraint)

					if (original.Height > original.Width)
					{
						if (size == PhotoSize.Small)
							targetH = DefaultValues.FixedSmallImageHeight;
						else
							targetH = DefaultValues.FixedMediumImageHeight;

						targetW = (int)(original.Width * ((float)targetH / (float)original.Height));
					}
					else
					{
						if (size == PhotoSize.Small)
							targetW = DefaultValues.FixedSmallImageWidth;
						else
							targetW = DefaultValues.FixedMediumImageWidth;

						targetH = (int)(original.Height * ((float)targetW / (float)original.Width));
					}
				}
				else
				{
					// for full preview, we scale proportionally according to orienation
					if (original.Height > original.Width)
					{
						targetH = Math.Min(original.Height, DefaultValues.MaxFullImageSize);
						targetW = (int)(original.Width * ((float)targetH / (float)original.Height));
					}
					else
					{
						targetW = Math.Min(original.Width, DefaultValues.MaxFullImageSize);
						targetH = (int)(original.Height * ((float)targetW / (float)original.Width));
					}
				}

				using (System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(new MemoryStream(imageFile)))
				{
					// Create a new blank canvas.  The resized image will be drawn on this canvas.
					using (Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format24bppRgb))
					{
						bmPhoto.SetResolution(72, 72);

						using (Graphics grPhoto = Graphics.FromImage(bmPhoto))
						{
							grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
							grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
							grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;
							grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, targetW, targetH), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel);

							MemoryStream mm = new MemoryStream();
							bmPhoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg);
							return mm.GetBuffer();
						}
					}
				}
			}
		}