| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- using Cognex.VisionPro;
- using OpenCvSharp;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Media.Imaging;
- namespace TeamAAS_VP.Core
- {
- public class ImageHelper
- {
- /// <summary>
- /// 压缩并保存图片
- /// </summary>
- /// <param name="bitmap"></param>
- /// <param name="path">目标图像存储路径JPEG</param>
- /// <param name="quality">压缩等级,0到100,0 最差质量,100 最佳</param>
- public static void CompressImage(Bitmap bitmap, string path, long quality = 100)
- {
- ImageCodecInfo codecInfo = GetEncoderInfo("image/jpeg");
- System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.Quality;
- EncoderParameters parameters = new EncoderParameters(1);
- EncoderParameter parameter = new EncoderParameter(encoder, quality);
- parameters.Param[0] = parameter;
- bitmap.Save(path, codecInfo, parameters);
- bitmap.Dispose();
- parameter.Dispose();
- parameters.Dispose();
- }
- private static ImageCodecInfo GetEncoderInfo(String mimeType)
- {
- int j;
- ImageCodecInfo[] encoders;
- encoders = ImageCodecInfo.GetImageEncoders();
- for (j = 0; j < encoders.Length; ++j)
- {
- if (encoders[j].MimeType == mimeType)
- return encoders[j];
- }
- return null;
- }
- public static Bitmap ICogImageConvertBitmap(ICogImage image)
- {
- return image.ToBitmap();
- }
- public static Mat ICogImageConvertMat(ICogImage image)
- {
- var im = image.ToBitmap();
- Mat im1 = OpenCvSharp.Extensions.BitmapConverter.ToMat(im);
- im.Dispose();
- return im1;
- }
- public static Bitmap MatConvertBitmap(Mat image)
- {
- return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
- }
- public static ICogImage MatConvertICogImage(Mat image, bool color = false)
- {
- var im = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
- ICogImage cogImage = new CogImage8Grey(im);
- if (color)
- {
- cogImage = new CogImage24PlanarColor(im);
- }
- im.Dispose();
- return cogImage;
- }
- public static BitmapImage ConvertToBitmapImage(System.Drawing.Bitmap bitmap)
- {
- using (MemoryStream memoryStream = new MemoryStream())
- {
- // 将 System.Drawing.Bitmap 保存到内存流中
- bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
- // 重置内存流的位置,以便从头开始读取
- memoryStream.Seek(0, SeekOrigin.Begin);
- // 创建 BitmapImage 对象并加载内存流中的图像数据
- BitmapImage bitmapImage = new BitmapImage();
- bitmapImage.BeginInit();
- bitmapImage.StreamSource = memoryStream;
- bitmapImage.EndInit();
- return bitmapImage;
- }
- }
- public static BitmapImage ConvertToBitmapImage(ICogImage image)
- {
- var bitmap = image.ToBitmap();
- using (MemoryStream memoryStream = new MemoryStream())
- {
- // 将 System.Drawing.Bitmap 保存到内存流中
- bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
- // 重置内存流的位置,以便从头开始读取
- memoryStream.Seek(0, SeekOrigin.Begin);
- // 创建 BitmapImage 对象并加载内存流中的图像数据
- BitmapImage bitmapImage = new BitmapImage();
- bitmapImage.BeginInit();
- bitmapImage.StreamSource = memoryStream;
- bitmapImage.EndInit();
- bitmap.Dispose();
- return bitmapImage;
- }
- }
- public static BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap)
- {
- BitmapImage bitmapImage = new BitmapImage();
- using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
- {
- bitmap.Save(ms, bitmap.RawFormat);
- bitmapImage.BeginInit();
- bitmapImage.StreamSource = ms;
- bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
- bitmapImage.EndInit();
- bitmapImage.Freeze();
- }
- return bitmapImage;
- }
- }
- }
|