Пример #1
0
        public void SaveToStream(Stream stream, PictureImage image)
        {
            var bmp     = new Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb);
            var bmpData = bmp.LockBits(new Rectangle(Point.Empty, bmp.Size), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

            Marshal.Copy(image.Data, 0, bmpData.Scan0, image.Data.Length);
            bmp.UnlockBits(bmpData);
            bmp.Save(stream, ImageFormat.Png);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var sourcePath = args[0];
            var image      = new PictureImage();
            var reader     = new GenericReader();

            image.LoadFromFile(sourcePath, reader);
            var writer = new PngWriter();

            image.SaveToFile(Service.ConvertToTargetPath(sourcePath), writer);
        }
Пример #3
0
        public void LoadFromStream(Stream stream, PictureImage image)
        {
            var i       = Image.FromStream(stream);
            var bmp     = new Bitmap(i);
            var bmpData = bmp.LockBits(new Rectangle(Point.Empty, i.Size), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

            image.Width  = i.Width;
            image.Height = i.Height;
            image.Stride = bmpData.Stride;
            image.Data   = new byte[bmpData.Stride * bmpData.Height];
            Marshal.Copy(bmpData.Scan0, image.Data, 0, image.Data.Length);
            bmp.UnlockBits(bmpData);
        }
Пример #4
0
 /// <summary>
 /// Метод создания и выравнивания необходимых элементов для загруженной или созданной нейросети.
 /// </summary>
 void SetNN()
 {
     // Изменения в интерфейсе:
     LabelStatus.Visible     = false;
     LabelImage.Visible      = true;
     PictureImage.Width      = IRNN1.PictureDimension + 2; // + 2 для метода GetPixel (он неправильно работает на границе холста).
     PictureImage.Height     = PictureImage.Width;
     PictureImage.Visible    = true;
     PictureNeuronet.Left    = PictureImage.Right + 14;
     PictureNeuronet.Top     = PictureImage.Top;
     PictureNeuronet.Width   = 270;
     PictureNeuronet.Height  = PictureNeuronet.Width;
     LabelNeuronet.Left      = PictureNeuronet.Left - 3;
     LabelNeuronet.Visible   = true;
     PictureNeuronet.Visible = true;
     Width  = PictureNeuronet.Right + 24;
     Height = Math.Max(PictureImage.Bottom, PictureNeuronet.Bottom) + 50 + ToolStripImgRcg.Height;
     // Открытие доступа к панели инструментов:
     LabelImage.Visible      = true;
     PictureImage.Visible    = true;
     LabelNeuronet.Visible   = true;
     PictureNeuronet.Visible = true;
     ToolSave.Enabled        = true;
     ToolClose.Enabled       = true;
     ToolRefresh.Enabled     = true;
     ToolName.Enabled        = true;
     ToolImage.Enabled       = true;
     ToolImage.Text          = "";
     ToolAddImage.Enabled    = true;
     ToolDeleteImage.Enabled = true;
     ToolImgRcg.Enabled      = true;
     LabelStatus.Visible     = false;
     // Создание графических объектов:
     StylusType   = 0;                                                                                                                                              // Обычная кисть.
     Stylus       = new Pen(Color.FromArgb(128, 255, 128), 9.0f);                                                                                                   // Создание пера с заданным цветом и размером.
     BgrpImage    = BufferedGraphicsManager.Current.Allocate(PictureImage.CreateGraphics(), new Rectangle(0, 0, PictureImage.Width, PictureImage.Height));          // Создаем для этого графический буфер.
     BgrpNeuronet = BufferedGraphicsManager.Current.Allocate(PictureNeuronet.CreateGraphics(), new Rectangle(0, 0, PictureNeuronet.Width, PictureNeuronet.Height)); // Аналогично для рисования состояния нейросети.
 }