Esempio n. 1
0
        /// <summary>
        /// Обрезка IImage прямоугольной областью
        /// </summary>
        /// <param name="img"></param>
        /// <param name="destRect"></param>
        /// <returns></returns>
        public static GDI.IImage CropIImage(GDI.IImage img, Rectangle destRect)
        {
            GDI.IImage retImg;

            var srcBmp  = CreateBitmapFromIImage((IImage)img);
            var destBmp = new Bitmap(destRect.Width, destRect.Height);

            var gR = Graphics.FromImage(destBmp);

            gR.DrawImage(srcBmp, 0, 0, destRect, GraphicsUnit.Pixel);
            gR.Dispose();
            srcBmp.Dispose();

            var mStream = new MemoryStream();

            destBmp.Save(mStream, ImageFormat.Png);
            destBmp.Dispose();

            var bufSize = (uint)mStream.Length;

            byte[] buffer = mStream.GetBuffer();

            IntPtr bytes = Marshal.AllocHGlobal(buffer.Length);

            Marshal.Copy(buffer, 0, bytes, buffer.Length);
            ImagingFactory.CreateImageFromBuffer(bytes, (uint)buffer.Length, GDI.BufferDisposalFlag.BufferDisposalFlagGlobalFree, out retImg);

            return(retImg);
        }
Esempio n. 2
0
        /// <summary>
        /// Загрузка IImage из файла
        /// </summary>
        /// <param name="file"></param>
        /// <param name="image"></param>
        /// <param name="imageSize"></param>
        public static void LoadImageFromFile(string file, out GDI.IImage image, out Size imageSize)
        {
            GDI.ImageInfo newImageInfo;

            ImagingFactory.CreateImageFromFile(file, out image);

            image.GetImageInfo(out newImageInfo);

            imageSize = new Size((int)newImageInfo.Width, (int)newImageInfo.Height);
        }
Esempio n. 3
0
        /// <summary>
        /// Загрузка IImage из файла в память (без привязки к файлу)
        /// </summary>
        /// <param name="file"></param>
        /// <param name="image"></param>
        public static void LoadImageFromFileIntoMemory(string file, out GDI.IImage image)
        {
            FileStream   newFileStream   = new FileStream(file, FileMode.Open);
            MemoryStream newMemoryStream = new MemoryStream((int)newFileStream.Length);

            CopyStream(newFileStream, newMemoryStream);

            byte[] buffer = newMemoryStream.GetBuffer();

            IntPtr bytes = Marshal.AllocHGlobal(buffer.Length);

            Marshal.Copy(buffer, 0, bytes, buffer.Length);
            ImagingFactory.CreateImageFromBuffer(bytes, (uint)buffer.Length, GDI.BufferDisposalFlag.BufferDisposalFlagGlobalFree, out image);

            newFileStream.Close();
        }
Esempio n. 4
0
        /// <summary>
        /// Сохраняет данные IImage в файл
        /// </summary>
        /// <param name="image"></param>
        /// <param name="file"></param>
        public static void SaveImageFromMemory(GDI.IImage image, string file)
        {
            GDI.ImageInfo    newImageInfo;
            GDI.IBitmapImage newIBitmapImage;
            Bitmap           newBitmap;

            image.GetImageInfo(out newImageInfo);

            ImagingFactory.CreateBitmapFromImage(image, newImageInfo.Width, newImageInfo.Height, PixelFormatID.PixelFormat24bppRGB, DefaultInterpolation, out newIBitmapImage);

            newBitmap = ImageUtils.IBitmapImageToBitmap((IBitmapImage)newIBitmapImage);

            newBitmap.Save(file, ImageFormat.Jpeg);

            Marshal.FinalReleaseComObject(newIBitmapImage);
            newBitmap.Dispose();
        }
Esempio n. 5
0
 /// <summary>
 /// Загрузка IImage из файла
 /// </summary>
 /// <param name="file"></param>
 /// <param name="image"></param>
 public static void LoadImageFromFile(string file, out GDI.IImage image)
 {
     ImagingFactory.CreateImageFromFile(file, out image);
 }