示例#1
0
        public void ResizeSetOfLegoImages(int totalImagesToConvert = 100)
        {
            //string LegoImagesWriteLocation = "c:\\LegoCatalog\\ImagesJpeg";
            string LegoImagesWriteLocation = "f:\\LegoCatalog\\ImagesJpeg";

            int i = 1;

            foreach (var part in db.Parts.Where(p => string.IsNullOrWhiteSpace(p.IconLinkJpeg)).Take(totalImagesToConvert).OrderBy(p => p.ItemId).ToList())
            //foreach (var part in db.Parts.Where(p => p.IconLinkJpeg == "error").Take(totalImagesToConvert).OrderBy(p => p.ItemId).ToList())
            {
                byte[] imageBytes;
                string imageFilename = $"{part.ItemId}.jpg";

                try
                {
                    using (var webClient = new WebClient())
                    {
                        var imageLink = part.ImageLink.Replace("https://", "");
                        imageBytes = webClient.DownloadData(part.ImageLink);
                    }

                    if (imageBytes != null)
                    {
                        MagickImage image = new MagickImage(imageBytes);
                        image.Format  = MagickFormat.Jpeg;
                        image.Quality = 75;

                        image.Resize(80, 80);
                        image.Write(Path.Combine(LegoImagesWriteLocation, imageFilename));

                        part.IconLinkJpeg = imageFilename;
                        db.SaveChanges();

                        Console.WriteLine($"Converted image {i++} to {imageFilename}");
                    }
                }
                catch (Exception ex)
                {
                    part.IconLinkJpeg = "error";
                    db.SaveChanges();

                    Console.WriteLine($"Error resizing image {imageFilename} from {part.ImageLink}: {ex.Message}");
                    Thread.Sleep(1000);  // pause incase the issue is network related
                }
            }
        }