示例#1
0
        /// <summary>
        /// 图片点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Upload_Image_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                Filter = "图像文件|*.jpg;*.png;*.jpeg;*.bmp;*.gif|所有文件|*.*"
            };

            if ((bool)openFileDialog.ShowDialog())
            {
                QiniuUtil qiniuUtil = new QiniuUtil()
                {
                    ConfigUtil = new Qiniu.Storage.Config(),
                    TokenUtil  = null
                };

                string ret = qiniuUtil.ChunkUpload("chat_" + CommonUtil.GetTimeSecond() + "_msg." + CommonUtil.GetFileExtra(openFileDialog.SafeFileName), openFileDialog.FileName);

                JObject jObject = JObject.Parse(ret);

                ImageParam imageParam = new ImageParam()
                {
                    Image = new Image()
                    {
                        Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(QiniuUtil.Domain + jObject["key"])), Opacity = 0
                    },
                    Bord    = QiniuUtil.Domain + jObject["key"],
                    Default = new DockPanel(),
                };

                ChatingContent.Children.Add(imageParam.Dock);
            }
        }
        public HttpResponseMessage CategoryImage(int id, [FromUri] ImageParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            HttpResponseMessage message = new HttpResponseMessage();

            object[] args = new object[5];
            args[0] = id;
            args[1] = param.h;
            args[2] = param.w;
            args[3] = param.Mode;
            bool?showDefault = param.ShowDefault;

            args[4] = showDefault.HasValue ? ((object)showDefault.GetValueOrDefault()) : ((object)1);
            string         key  = string.Format("categoryImage[id:{0}][w:{1}][h:{2}][m:{3}][d:{4}]", args);
            ImageCacheItem item = null;

            if ((item == null) || Settings.IsCacheDisabled)
            {
                Image categoryImage = ExcursionProvider.GetCategoryImage(id);
                if ((categoryImage == null) && (!(showDefault = param.ShowDefault).GetValueOrDefault() && showDefault.HasValue))
                {
                    message.StatusCode = HttpStatusCode.NotFound;
                }
                else
                {
                    ImageFormatter formatter = new ImageFormatter(categoryImage, Pictures.nophoto)
                    {
                        Format = (categoryImage != null) ? ImageFormat.Jpeg : ImageFormat.Png
                    };
                    param.ApplyFormat(formatter);
                    Stream stream = formatter.CreateStream();
                    if (stream != null)
                    {
                        item = ImageCacheItem.Create(stream, formatter.MediaType);
                        HttpContext.Current.Cache.Add(key, item, null, DateTime.Now.AddMinutes(10.0), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
                        message.Content = new StreamContent(stream);
                        message.Content.Headers.ContentType = new MediaTypeHeaderValue(formatter.MediaType);
                        message.Headers.CacheControl        = new CacheControlHeaderValue();
                        message.Headers.CacheControl.Public = true;
                        message.Headers.CacheControl.MaxAge = new TimeSpan?(TimeSpan.FromHours(1.0));
                    }
                    else
                    {
                        message.StatusCode = HttpStatusCode.NotFound;
                    }
                }
            }
            else
            {
                message.Content = new StreamContent(item.CraeteStream());
                message.Content.Headers.ContentType = new MediaTypeHeaderValue(item.MediaType);
            }
            message.Headers.CacheControl        = new CacheControlHeaderValue();
            message.Headers.CacheControl.Public = true;
            message.Headers.CacheControl.MaxAge = new TimeSpan?(TimeSpan.FromHours(1.0));
            return(message);
        }
示例#3
0
        public string UploadImage(ImageParam imageParam)
        {
            var storageSettings = ReadAppSettings.ReadCloudStorageSettings().Value;
            var bucketName      = storageSettings.BucketName;
            var baseUrl         = storageSettings.BaseUrl;

            GoogleCredential credential = null;

            using (var jsonStream = new FileStream("storage-credentials.json", FileMode.Open,
                                                   FileAccess.Read, FileShare.Read))
            {
                credential = GoogleCredential.FromStream(jsonStream);
            }

            var storageClient = StorageClient.Create(credential);

            var bytes = Convert.FromBase64String(imageParam.Image);

            var extension = FileUtils.GetImageExtension(imageParam.Type);
            var filename  = FileUtils.RandomImageName() + extension;

            var uploaded = storageClient.UploadObject(bucketName, filename, imageParam.Type, new MemoryStream(bytes));

            var imageUrl = "";

            if (uploaded != null)
            {
                imageUrl = string.Join("/", new string[] { baseUrl, bucketName, filename });
            }
            return(imageUrl);
        }
示例#4
0
        private void ThreadBinaryHist()
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgHist(SelectedHist.HIST_BINARY, thresValue), typeof(ImageParam));
            Bitmap imgHist = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format24bppRgb, imgParam.data);

            pboxBinaryHist.Image = imgHist;
        }
        public void Config()
        {
            imageParam = new ImageParam
            {
                Image = "base64",
                Type  = "img/png"
            };

            mockUploadFileService = new Mock <IUploadFileService>();
        }
示例#6
0
        private void ThreadBinary()
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgBinary(thresValue), typeof(ImageParam));
            Bitmap imgBinary = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);

            imgBinary.Palette         = CvToolBox.ScalePalette;
            pboxBinary.Image          = imgBinary;
            pboxDenoisingBinary.Image = imgBinary;
        }
示例#7
0
        public IActionResult UploadImage([FromBody] ImageParam imageParam)
        {
            if (imageParam.Type == null || imageParam.Type.Trim() == "")
            {
                return(BadRequest("Image doesn't recognized!"));
            }

            string imageUrl = _uploadFileService.UploadImage(imageParam);

            return(Ok(new { Image = imageUrl }));
        }
示例#8
0
            public List <DetailConfing> GetAllModels()
            {
                List <DetailConfing> detailConfings = new List <DetailConfing>();
                string domain = "https://www.partslink24.com/";
                string path   = "https://www.partslink24.com/vwag/audi_parts/";
                string html   = Site.LoadDocument(URL).DocumentNode.InnerHtml;

                DetailConfing newDetailConfig = DetailConfing.FromJson(getTableJson());

                newDetailConfig.ImageInfo = loadImageInfo();
                detailConfings.Add(newDetailConfig);

                return(detailConfings);

                ImageInfo loadImageInfo()
                {
                    ImageParam imageParam = ImageParam.FromJson(getImageParamJson());
                    ImageInfo  imageInfo  = ImageInfo.FromJson(getImageInfoJson());

                    imageInfo.ImageUrl = MakeImageUrl();
                    return(imageInfo);

                    string getImageParamJson()
                    {
                        string imagePattern = @"""imageViewerParamsUrl"":""(.*?)""";
                        string imageJsonUrl = path + "/" + Regex.Match(html, imagePattern).Groups[1].Value.Replace("\\u0026", "&");

                        return(Site.LoadJsonString(imageJsonUrl));
                    }

                    string getImageInfoJson()
                    {
                        string jsonImageInfoUrl = domain + imageParam.Pathparams.Url + "&cv=1&request=GetImageInfo&ticket=" + imageParam.Pathparams.Ticket;

                        return(Site.LoadJsonString(jsonImageInfoUrl));
                    }

                    string MakeImageUrl()
                    {
                        string ImageSetting = string.Format(@"&rnd=2771&request=GetImage&format={0}&cv=1&bbox=0%2C0%2C1248%2C1413&width={1}&height={2}&scalefac=1&ticket=",
                                                            imageInfo.ImageFormat, imageInfo.ImageWidth, imageInfo.ImageHeight);

                        return(domain + imageParam.Pathparams.Url + ImageSetting + imageParam.Pathparams.Ticket.Trim());
                    }
                }

                string getTableJson()
                {
                    string tabjePattern = @",(""positions"":(.*?)),""lang";

                    return("{" + Regex.Match(html, tabjePattern, RegexOptions.Singleline).Groups[1].Value + "}");
                }
            }
示例#9
0
        private void radiobtnClose_Click(object sender, EventArgs e)
        {
            radiobtnDilate.Checked = false;
            radiobtnErode.Checked  = false;
            radiobtnOpen.Checked   = false;
            radiobtnClose.Checked  = true;

            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgDenoising(Operation.CLOSE, (Sharp)comboboxSharp.SelectedIndex, Convert.ToInt16(tboxSize.Text)), typeof(ImageParam));
            Bitmap imgDenoising = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);

            imgDenoising.Palette = CvToolBox.ScalePalette;
            pboxDenoising.Image  = imgDenoising;
        }
        public HttpResponseMessage Photo(int id, [FromUri] ImageParam param)
        {
            HttpResponseMessage message   = new HttpResponseMessage();
            ImageFormatter      formatter = new ImageFormatter(GuideProvider.GetGuideImage(id), Pictures.GuideNoPhoto);

            param.ApplyFormat(formatter);
            Stream content = formatter.CreateStream();

            if (content != null)
            {
                message.Content = new StreamContent(content);
                message.Content.Headers.ContentType = new MediaTypeHeaderValue(formatter.MediaType);
                return(message);
            }
            message.StatusCode = HttpStatusCode.NotFound;
            return(message);
        }
示例#11
0
        private bool GetOriginalHistImage()
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgOriginalHist(), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgOriginalHist = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format24bppRgb, imgParam.data);
                pboxOriginalHist3.Image = imgOriginalHist;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#12
0
        private bool ValidateData(ImageParam imageParam)
        {
            //图片路径
            if (!Directory.Exists(imageParam.PicPath))
            {
                MessageBox.Show("图片路径不存在");
                return(false);
            }

            if (imageParam.ChangeDimension)
            {
                if (imageParam.Width < 0)
                {
                    MessageBox.Show($"图片宽度 {imageParam.Width} 不合法");
                    return(false);
                }

                if (imageParam.Height < 0)
                {
                    MessageBox.Show($"图片高度 {imageParam.Height} 不合法");
                    return(false);
                }
            }

            if (imageParam.ChangeDpi)
            {
                if (imageParam.Xdpi < 0)
                {
                    MessageBox.Show($"图片 XDPI {imageParam.Xdpi} 不合法");
                    return(false);
                }

                if (imageParam.Ydpi < 0)
                {
                    MessageBox.Show($"图片 YDPI {imageParam.Ydpi} 不合法");
                    return(false);
                }
            }

            if (!imageParam.ChangeDimension && !imageParam.ChangeDpi)
            {
                MessageBox.Show($"至少要选择一个操作选项");
                return(false);
            }
            return(true);
        }
示例#13
0
        private bool GetMinRectImage(int height, int width, int area)
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgMinRect(height, width, area), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgMinRect = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format24bppRgb, imgParam.data);
                pboxMinRect.Image = imgMinRect;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#14
0
        private bool GetBinaryImage(int thresholdValue)
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgBinary(thresholdValue), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgBinary = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                imgBinary.Palette = CvToolBox.ScalePalette;
                pboxBinary.Image  = imgBinary;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#15
0
        private bool GetDenoising(Operation opera, Sharp sharp, int size)
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgDenoising(opera, sharp, size), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgDenoising = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                imgDenoising.Palette = CvToolBox.ScalePalette;
                pboxDenoising.Image  = imgDenoising;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#16
0
        private bool GetWhiteBlackBalanceImage()
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgWhiteBlackBalance(), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgBalance = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                imgBalance.Palette      = CvToolBox.ScalePalette;
                pboxOriginalHist3.Image = imgBalance;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#17
0
        private bool GetRectification2Image()
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgRectification2(), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgRectification2 = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                imgRectification2.Palette = CvToolBox.ScalePalette;
                pboxRectification2.Image  = imgRectification2;
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#18
0
        /// <summary>
        /// 按比例计算宽度高度
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="maxWidth">最大宽度</param>
        /// <param name="maxHeight">最大高度</param>
        /// <returns></returns>
        public static ImageParam ResizeCalculation(Stream stream, int maxWidth, int maxHeight)
        {
            Image image = Image.FromStream(stream);
            var   param = new ImageParam {
                Width = image.Width, Height = image.Height
            };

            double rateWidth  = param.Width / (double)maxWidth;
            double rateHeight = param.Height / (double)maxHeight;

            if (rateWidth >= rateHeight)
            {
                param.Width  = maxWidth;
                param.Height = (int)Math.Round(param.Height / rateWidth);
            }
            else
            {
                param.Width  = (int)Math.Round(param.Width / rateHeight);
                param.Height = maxHeight;
            }
            return(param);
        }
示例#19
0
        private bool GetHistImage(SelectedHist selectedHist, int thresholdValue = 0)
        {
            ImageParam imgParam = new ImageParam();

            imgParam = (ImageParam)Marshal.PtrToStructure(ImgHist(selectedHist, thresholdValue), typeof(ImageParam));
            if (imgParam.result)
            {
                Bitmap imgHist;
                switch (selectedHist)
                {
                case SelectedHist.HIST_GRAY:
                    imgHist            = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                    imgHist.Palette    = CvToolBox.ScalePalette;
                    pboxGrayHist.Image = imgHist;
                    break;

                case SelectedHist.HIST_FILTER:
                    imgHist              = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, imgParam.data);
                    imgHist.Palette      = CvToolBox.ScalePalette;
                    pboxFilterHist.Image = imgHist;
                    break;

                case SelectedHist.HIST_BINARY:
                    imgHist = new Bitmap(imgParam.width, imgParam.height, imgParam.step, System.Drawing.Imaging.PixelFormat.Format24bppRgb, imgParam.data);
                    pboxBinaryHist.Image = imgHist;
                    break;

                default:
                    break;
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }
示例#20
0
        private void button1_Click(object sender, EventArgs e)
        {
            ImageParam imageParam = this.PrepareData();

            if (!this.ValidateData(imageParam))
            {
                return;
            }

            //开始去水印:获取文件 ,只取第一层级
            List <string> files = new List <string>();

            files.AddRange(Directory.GetFiles(imageParam.PicPath, "*.jpg"));

            foreach (var dir in Directory.GetDirectories(imageParam.PicPath))
            {
                if (dir.EndsWith(targetPath, StringComparison.InvariantCultureIgnoreCase) ||
                    dir.EndsWith(bakpath, StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                files.AddRange(Directory.GetFiles(dir, "*.jpg", SearchOption.AllDirectories));
            }

            if (!files.Any())
            {
                MessageBox.Show("路径下不存在任何图片");
                return;
            }

            string rootpath    = imageParam.PicPath.TrimEnd('\\');
            string filepattern = $"{rootpath}\\(?<subpath>.*)\\.*.jpg";

            filepattern = filepattern.Replace("\\", "\\\\");

            //多线程处理图片, 默认使用本机处理器数 * 2;
            ParallelOptions parallelOptions = new ParallelOptions
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount * 2
                                         //MaxDegreeOfParallelism = 1
            };

            ImageProcessService service = new ImageProcessService();

            string newtargetpath = Path.Combine(rootpath, targetPath);
            string newbakpath    = Path.Combine(rootpath, bakpath);

            //开始处理图片

            //显示进度条
            progressBar1.Visible = true;
            progressBar1.Value   = 0; //清空进度条
            int len = files.Count, flag = 1;

            Parallel.ForEach(files, parallelOptions, (file) =>
            {
                string fileName = Path.GetFileName(file);
                Match match     = Regex.Match(file, filepattern, RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    string subPath        = match.Groups["subpath"].Value;
                    string targetFileName = Path.Combine(rootpath, targetPath, subPath, fileName);
                    string bakfilename    = Path.Combine(rootpath, bakpath, subPath, fileName);

                    CreateDirectory(targetFileName);
                    CreateDirectory(bakfilename);

                    //压缩图片,返回图片流
                    using (Image fileStream = Image.FromFile(file))
                    {
                        MemoryStream memoryStream = service.GetImagePress(fileStream, imageParam);
                        //保存图片到新目录
                        Image.FromStream(memoryStream).Save(targetFileName);
                    }

                    //移动旧图到备份目录
                    new FileInfo(file).MoveTo(bakfilename);

                    //如果目录为空,则删除目录
                    //需要考虑多级为空,依次递归删除至顶层目录


                    //展示进度
                    int newbar = Convert.ToInt32(Math.Ceiling(flag++ *100.0 / len));
                    if (progressBar1.Value < newbar)
                    {
                        progressBar1.Value = newbar;
                    }
                }

                //Thread.Sleep(1000);
                Application.DoEvents();
            });

            MessageBox.Show("工作完成!");
        }
        public virtual MemoryStream GetImagePress(Image image, ImageParam imageParam)
        {
            //处理jpeg图片
            if (image.PixelFormat.ToString() == "8207" ||
                IsPixelFormatIndexed(image.PixelFormat))
            {
                image = ConvertCmykToRgb(image);
            }

            //转换 size
            int width  = image.Width;
            int height = image.Height;

            if (imageParam.ChangeDimension)
            {
                width  = imageParam.Width;
                height = imageParam.Height;
            }

            // 获取图片比率 ,等比例压缩, width和height需要进行换算
            var aspectRatio = Convert.ToDouble(image.Width) / Convert.ToDouble(image.Height);
            int tempHeight  = Convert.ToInt32(width / aspectRatio);

            if (tempHeight > height)
            {
                width = Convert.ToInt32(height * aspectRatio);
            }
            else
            {
                height = tempHeight;
            }

            //根据指定大小创建Bitmap实例
            Bitmap bt = new Bitmap(width, height);

            using (Graphics g = Graphics.FromImage(bt))
            {
                g.Clear(Color.White);
                //设置画布的描绘质量
                Rectangle rect = new Rectangle((imageParam.Width - width) / 2, (imageParam.Height - height) / 2, width, height);
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.SmoothingMode      = SmoothingMode.HighQuality;
                g.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                g.DrawImage(image, rect);
                g.Dispose();
            }

            EncoderParameters EncoderParams = new EncoderParameters(); //取得内置的编码器

            long[] Quality = new long[1];
            Quality[0] = 100;
            EncoderParameter EncoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);

            EncoderParams.Param[0] = EncoderParam;

            try
            {
                //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象
                ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo   jpegICI  = null;
                for (int i = 0; i < arrayICI.Length; i++)
                {
                    if (arrayICI[i].FormatDescription.Equals("JPEG"))
                    {
                        jpegICI = arrayICI[i]; //设置为JPEG编码方式
                        break;
                    }
                }

                bt = Sharpen(bt, 0.5f);


                if (imageParam.Xdpi > 0 && imageParam.Ydpi > 0)
                {
                    //100分辨率
                    bt.SetResolution(imageParam.Xdpi, imageParam.Ydpi);
                }

                MemoryStream newStream = new MemoryStream();
                if (jpegICI != null) //保存缩略图
                {
                    bt.Save(newStream, jpegICI, EncoderParams);
                }
                else
                {
                    bt.Save(newStream, ImageFormat.Jpeg);
                }
                return(newStream);
            }
            catch { return(null); }
        }