/// <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); }
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); }
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>(); }
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; }
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 })); }
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 + "}"); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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); }
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); } }