/// <summary> /// Metoda zmieniająca rozmiar obrazka /// </summary> /// <param name="width">Szerokość po zmianie</param> /// <param name="height">Wysokość po zmianie</param> /// <param name="imageBytes">Aktualny obrazek w postaci binarnej</param> /// <param name="createThumbnail">Czy utworzyć miniaturkę obrazka</param> public static ResizeImageResult ResizeImage(int width, int height, byte[] imageBytes, bool createThumbnail = true) { var resizeResult = new ResizeImageResult(); // Utwórz obiekt Image z tablicy bajtów var img = Image.FromStream(new MemoryStream(imageBytes)); // Utwórz bitmapę o nowych rozmiarach var b = new Bitmap(img, new Size(width, height)); if (createThumbnail) { // Wygeneruj miniaturkę obrazka o zadnych rozmiarach var thumbnail = img.GetThumbnailImage(ThumbnailSize, ThumbnailSize, ThumbnailCallback, IntPtr.Zero); // Przekonwertuj miniaturkę obrazka do postaci binarnej var ms = new MemoryStream(); thumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); resizeResult.Thumbnail = ms.ToArray(); } // Przeskaluj oryginalny obrazek do nowych rozmiarów var converter = new ImageConverter(); imageBytes = (byte[])converter.ConvertTo(b, typeof(byte[])); resizeResult.ResizedImage = imageBytes; return(resizeResult); }
/// <summary> /// Resize image /// </summary> /// <param name="target">Target</param> /// <param name="width">Width</param> /// <param name="height">Height</param> /// <returns>Response result</returns> ResizeImageResult IConnectorDriver.Resize(string target, int width, int height) { // Parse target file path var path = ParseFilePath(target); // Remove thumbnails path.RemoveThumbs(); // Initialize the ImageFactory using the overload to preserve EXIF metadata. using (var imageFactory = new ImageFactory()) { // Load, resize and save an image. imageFactory.Load(path.Info.FullName) .Resize(new Size(width, height)) .Save(path.Info.FullName); } // Create command result var commandResult = new ResizeImageResult(); // Add image to changed items commandResult.Changed.Add(ImageEntryObjectModel.Create(path.File, path.Root)); // Return result return(commandResult); }