示例#1
0
        public async Task PixelImagesToGoogle()
        {
            PixelImage pixelImage = null;
            int        skip       = 0;

            do
            {
                _logger.Info($"skiping: {skip}");
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    var q = pixelContext.PixelImage
                            .Where(x => string.IsNullOrWhiteSpace(x.GoogleId) &&
                                   x.ProcessState == null || x.ProcessState.Value == 0)
                            .Skip(skip);
                    var count = await q.CountAsync();

                    _logger.Info($"To proccess: {count}");
                    pixelImage = await q.FirstOrDefaultAsync();
                }
                if (pixelImage == null)
                {
                    break;
                }
                await PixelImageToGoogle(pixelImage);
            } while (true);
        }
        public void BlackAndWhite()
        {
            // Arrange
            Image      image      = Image.FromFile("image.jpg");
            PixelImage pixelImage = new PixelImage(new Bitmap(image));

            // Act
            pixelImage.BlackAndWhite();

            // Assert
            Assert.IsNotNull(pixelImage.pixels);
            pixelImage.GetAsBitmap().Save("image.png", ImageFormat.Png);
        }
示例#3
0
        public async Task UpdateImagesMeta(int index = 0)
        {
            PixelImage pixelImage = null;

            do
            {
                _logger.Info($"index: {index}");
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    pixelImage = await pixelContext.PixelImage.Skip(index).FirstOrDefaultAsync();
                }
                index++;

                await UpdateImageMeta(pixelImage);
            } while (pixelImage != null);
        }
        public void Constructor()
        {
            // Arrange
            Image image = Image.FromFile("image.jpg");

            // Act
            PixelImage pixelImage = new PixelImage(new Bitmap(image));

            // Assert
            Assert.IsNotNull(pixelImage.pixels);
            foreach (Pixel pixel in pixelImage.pixels)
            {
                if (pixel == null)
                {
                    Assert.Fail();
                }
            }
        }
示例#5
0
        public void ConvertFromBytesToPixels()
        {
            int j = 0;

            for (int i = 0; i < this.ImageToProcess.Length; i += 4)
            {
                if (ImageToProcess[i + 1] != 0)
                {
                    var red        = ImageToProcess[i + 1];
                    var px         = j % ImageWidth;
                    int py         = (j / ImageWidth);
                    var point      = new Point(px, py);
                    var PointToAdd = new Pixel(0, red, 0, 0, point);
                    PixelImage.Add(PointToAdd);
                }
                j++;
            }
        }
示例#6
0
        public async Task UpdateImageMeta(PixelImage pixelImage)
        {
            _logger.Info($"metaurl: {pixelImage.MetaUrl}");
            var list = await _imageMetaParser.LoadImageTags(pixelImage.MetaUrl);

            if (list != null && list.Count > 0)
            {
                _logger.Info($"Tags loaded: {list.Count}");
                var keywords = string.Join(',', list);
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    pixelImage.Keywords = keywords;
                    pixelContext.PixelImage.Update(pixelImage);

                    await pixelContext.SaveChangesAsync();
                }
            }
            else
            {
                _logger.Info("No tags.");
            }
        }
示例#7
0
            public DragBar(int width) : base()
            {
                bg           = new ThreePatch(Resources.Option_DragBarBG_Left, Resources.Option_DragBarBG_Mid, Resources.Option_DragBarBG_Right);
                btn          = new PictureBox();
                btn.SizeMode = PictureBoxSizeMode.AutoSize;
                btn.Image    = Resources.Option_DragBarBtn;
                btn.Cursor   = Cursors.Hand;
                bar          = new PixelImage();
                bar.SizeMode = PictureBoxSizeMode.StretchImage;
                bar.Image    = Resources.Option_DragBar_Mid;
                bar.Location = new Point(BtnMinX / 2, 0);
                BarWidth     = width;

                bg.Controls.Add(bar);
                bg.Controls.Add(btn);
                Controls.Add(bg);

                bar.BringToFront();
                btn.BringToFront();

                SetEvent();
                SetValueWithoutEvent(1f);
            }
示例#8
0
 /// <summary>
 /// 载入首层资源
 /// </summary>
 /// <param name="pImage"></param>
 public void LoadSource(PixelImage pImage, int ans)
 {
     Layers[0].Load(Matrix <double> .Build.Dense(SourceNum, 1, (i, j) => Convert.ToDouble(pImage.Data[i]) / 255));
     this.ans = ans;
 }
示例#9
0
        public async Task PixelImageToGoogle(PixelImage pixelImage)
        {
            _logger.Info($"url: {pixelImage.Url}");
            var arr = await _fileLoader.GetByteArrayAsync(pixelImage.Url);

            if (arr == null || arr.Length == 0)
            {
                _logger.Error("arr is null");
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    pixelImage.ProcessState = PixelImageProcessState.ImageNotFound;
                    pixelContext.Update(pixelImage);
                    await pixelContext.SaveChangesAsync();
                }
                return;
            }
            int width  = 0;
            int height = 0;

            //string phashStr = null;
            using (var stream = new MemoryStream())
            {
                try
                {
                    using (var im = new MagickImage(arr))
                    {
                        im.Strip();
                        im.Format     = MagickFormat.Jpeg;
                        im.Quality    = 85;
                        im.Interlace  = Interlace.Jpeg;
                        im.ColorSpace = ColorSpace.sRGB;
                        im.Settings.SetDefines(new JpegWriteDefines()
                        {
                            SamplingFactors = new MagickGeometry[] {
                                new MagickGeometry(4, 2)
                            }
                        });
                        width  = im.Width;
                        height = im.Height;
                        im.Write(stream);
                        //im.Grayscale();
                        //var phash = im.PerceptualHash();
                        //phashStr = phash.ToString();
                    }
                }
                catch (ImageMagick.MagickErrorException ex) {
                    _logger.Error(ex);
                    using (var pixelContext = new PixelContext(_dbContextOptions))
                    {
                        pixelImage.ProcessState = PixelImageProcessState.ImgFormatNotValid;
                        pixelContext.Update(pixelImage);
                        await pixelContext.SaveChangesAsync();
                    }
                    return;
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                    throw ex;
                }

                stream.Position = 0;

                try
                {
                    var name = string.IsNullOrEmpty(pixelImage.Title)
                        ? "image"
                        : pixelImage.Title;
                    var id = await _googleService.Upload(stream, $"{name}.jpg");

                    using (var pixelContext = new PixelContext(_dbContextOptions))
                    {
                        pixelImage.GoogleId = id;
                        //pixelImage.GrayscalePerceptualHash = phashStr;
                        pixelImage.Width  = width;
                        pixelImage.Height = height;
                        pixelContext.Update(pixelImage);
                        await pixelContext.SaveChangesAsync();
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                    throw ex;
                }
            }
            return;
        }