public void KucukBoyut(System.Drawing.Image yuklenenFoto, int resimBoyutu, string resimIsmi) { System.Drawing.Bitmap islenmisFoto = null; System.Drawing.Graphics grafikNesnesi = null; int hedeflenenGenislik = resimBoyutu; int hedeflenenYukseklik = resimBoyutu; int yeni_gen, yeni_yuk; yeni_yuk = (int)Math.Round(((float)yuklenenFoto.Height * (float)resimBoyutu) / (float)yuklenenFoto.Width); yeni_gen = hedeflenenGenislik; hedeflenenYukseklik = yeni_yuk; yeni_gen = yeni_gen > hedeflenenGenislik ? hedeflenenGenislik : yeni_gen; yeni_yuk = yeni_yuk > hedeflenenYukseklik ? hedeflenenYukseklik : yeni_yuk; islenmisFoto = new System.Drawing.Bitmap(hedeflenenGenislik, hedeflenenYukseklik); grafikNesnesi = System.Drawing.Graphics.FromImage(islenmisFoto); grafikNesnesi.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), new System.Drawing.Rectangle(0, 0, hedeflenenGenislik, hedeflenenYukseklik)); int x = (hedeflenenGenislik - yeni_gen) / 2; int y = (hedeflenenYukseklik - yeni_yuk) / 2; grafikNesnesi.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; grafikNesnesi.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; grafikNesnesi.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1); eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 95L); grafikNesnesi.DrawImage(yuklenenFoto, x, y, yeni_gen, yeni_yuk); islenmisFoto.Save(Server.MapPath("/Content/" + resimIsmi), codec, eParams); }
public static byte[] ResizeImageToByte(string fileName, int width, int height) { using (Bitmap bmp = (Bitmap) new Bitmap(fileName).Clone()) { Size newSize = new Size(width, height); using (Bitmap newBmp = new Bitmap((System.Drawing.Image)bmp, newSize)) { using (Graphics g = Graphics.FromImage(newBmp)) // Create Graphics object from original Image { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //Set Image codec of JPEG type, the index of JPEG codec is "1" System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; //Set the parameters for defining the quality of the thumbnail... here it is set to 100% System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1); eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75L); //Now draw the image on the instance of thumbnail Bitmap object g.DrawImage(bmp, new Rectangle(0, 0, newBmp.Width, newBmp.Height)); //newBmp.Save(newFileName, codec, eParams); //newBmp.Save(newFileName, Image.FromFile(fileName).RawFormat); MemoryStream ms = new MemoryStream(); newBmp.Save(ms, bmp.RawFormat); return(ms.GetBuffer()); } } } }
/// <summary> /// Initializes a new instance of the <see cref="ThumbnailCreator"/> class. /// </summary> /// <param name="tnSettings">The <see cref="ThumbnailSettings"/> to use.</param> /// <param name="worker">The <see cref="System.ComponentModel.BackgroundWorker"/>worker to use. /// </param> public ThumbnailCreator(ThumbnailSettings tnSettings, System.ComponentModel.BackgroundWorker worker) { this._tnSettings = tnSettings; this._worker = worker; #if false _imageCodec = GetEncoder (System.Drawing.Imaging.ImageFormat.Png); _qualityParameter = new System.Drawing.Imaging.EncoderParameter ( System.Drawing.Imaging.Encoder.Quality, 75L); _qualityParameters = new System.Drawing.Imaging.EncoderParameters (1); _qualityParameters.Param[0] = _qualityParameter; #else _imageCodec = GetEncoder (System.Drawing.Imaging.ImageFormat.Jpeg); _qualityParameter = new System.Drawing.Imaging.EncoderParameter ( System.Drawing.Imaging.Encoder.Quality, 75L); _qualityParameters = new System.Drawing.Imaging.EncoderParameters (1); _qualityParameters.Param[0] = _qualityParameter; #endif #if false using (System.Drawing.Bitmap bitmap1 = new System.Drawing.Bitmap (1, 1)) { System.Drawing.Imaging.EncoderParameters paramList = bitmap1.GetEncoderParameterList (_imageCodec.Clsid); System.Drawing.Imaging.EncoderParameter[] encParams = paramList.Param; foreach (System.Drawing.Imaging.EncoderParameter p in encParams) { THelper.Information ("Type {0}, GUID {1}", p.ValueType, p.Encoder.Guid); } paramList.Dispose (); } #endif }
public void SaveImage(string fileName, long size, int no) { //画像ファイルを読み込む System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fileName); //イメージエンコーダに関する情報を取得する System.Drawing.Imaging.ImageCodecInfo ici = GetEncoderInfo("image/jpeg"); try { //EncoderParameterオブジェクトを1つ格納できる //EncoderParametersクラスの新しいインスタンスを初期化 //ここでは品質のみ指定するため1つだけ用意する System.Drawing.Imaging.EncoderParameters eps = getOptiumQuarity(size, bmp, ici); //ファイル名を取得 string saveName = getSaveFileName(fileName, size, no); //保存する bmp.Save(saveName, ici, eps); bmp.Dispose(); eps.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public static void Thumbize(string pPage, string pThumb, Document document, Page page) { System.IO.MemoryStream cryptoStream = new System.IO.MemoryStream(Utility.Security.AES.DecryptStream(page.Token, System.IO.File.ReadAllBytes(System.IO.Path.Combine(pPage, page.Filename))).ToArray()); using (var srcImage = System.Drawing.Image.FromStream(cryptoStream)) { var newWidth = 300; var newHeight = 200; using (var newImage = new Bitmap(newWidth, newHeight)) using (var graphics = Graphics.FromImage(newImage)) { graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; graphics.DrawImage(srcImage, new System.Drawing.Rectangle(0, 0, newWidth, newHeight)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Drawing.Imaging.EncoderParameters parms = new System.Drawing.Imaging.EncoderParameters(1); parms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0); System.Drawing.Imaging.ImageCodecInfo jpegEncoder = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().FirstOrDefault(e => e.FormatDescription == "JPEG"); newImage.Save(ms, jpegEncoder, parms); System.IO.File.WriteAllBytes(System.IO.Path.Combine(pThumb, string.Format("{0}.jpg", document.Id.ToString())), SoftFluent.Samples.GED.Utility.Security.AES.EncryptStream(document.Token, ms.ToArray()).ToArray()); ms.Close(); } } }
public void SaveBmpWithImageCodecInfo(System.Drawing.Image img, string photoPath) { System.Drawing.Imaging.ImageCodecInfo encoderInfo = PictureWaterMark.GetEncoderInfo("image/jpeg"); System.Drawing.Imaging.Encoder quality = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters encoderParameters = new System.Drawing.Imaging.EncoderParameters(1); System.Drawing.Imaging.EncoderParameter encoderParameter = new System.Drawing.Imaging.EncoderParameter(quality, 100L); encoderParameters.Param[0] = encoderParameter; if (img == null) { return; } System.Drawing.Bitmap bitmap = null; try { bitmap = new System.Drawing.Bitmap(img); bitmap.Save(photoPath, encoderInfo, encoderParameters); } catch (Exception ex) { Log.WriteLog("SaveBmpWithImageCodecInfo出错", ex); } finally { bitmap.Dispose(); } }
public static string GetJPEGBase64StringFromBitmapImage(BitmapImage bmpImage, long jpegEncoderQuality, System.Drawing.RotateFlipType rotateFlip) { System.Drawing.Bitmap bmp = null; MemoryStream ms = new MemoryStream(); try { System.Drawing.Imaging.EncoderParameters encoderParameters = new System.Drawing.Imaging.EncoderParameters(1); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; encoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(myEncoder, jpegEncoderQuality); System.Drawing.Imaging.ImageCodecInfo jgpEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); bmp = UIHelper.BitmapImage2Bitmap(bmpImage); bmp.RotateFlip(rotateFlip); bmp.Save(ms, jgpEncoder, encoderParameters); return(Convert.ToBase64String(ms.ToArray())); } finally { DeleteObject(bmp.GetHbitmap()); bmp.Dispose(); bmp = null; } }
protected static void ImageResize(System.Drawing.Image orjinalFoto, int boyut, string dosyaAdi, string filePath) { System.Drawing.Bitmap islenmisFotograf = null; System.Drawing.Graphics grafik = null; int hedefGenislik = boyut; int hedefYukseklik = boyut; int new_width, new_height; new_height = (int)Math.Round(((float)orjinalFoto.Height * (float)boyut) / (float)orjinalFoto.Width); new_width = hedefGenislik; hedefYukseklik = new_height; new_width = new_width > hedefGenislik ? hedefGenislik : new_width; new_height = new_height > hedefYukseklik ? hedefYukseklik : new_height; islenmisFotograf = new System.Drawing.Bitmap(hedefGenislik, hedefYukseklik); grafik = System.Drawing.Graphics.FromImage(islenmisFotograf); grafik.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), new System.Drawing.Rectangle(0, 0, hedefGenislik, hedefYukseklik)); int paste_x = (hedefGenislik - new_width) / 2; int paste_y = (hedefYukseklik - new_height) / 2; grafik.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; grafik.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; grafik.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1); eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 95L); grafik.DrawImage(orjinalFoto, paste_x, paste_y, new_width, new_height); islenmisFotograf.Save(HttpContext.Current.Server.MapPath(filePath + dosyaAdi), codec, eParams); }
private void buttonSavePicture_Click(object sender, EventArgs e) { if (pictureBoxHierarchy.Image != null) { SaveFileDialog savedialog = new SaveFileDialog(); savedialog.Title = "Сохранить картинку как..."; savedialog.OverwritePrompt = true; savedialog.CheckPathExists = true; savedialog.Filter = "Image Files(*.JPG)|*.JPG"; savedialog.ShowHelp = true; System.Drawing.Imaging.ImageCodecInfo jpgEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters myEncoderParameters = new System.Drawing.Imaging.EncoderParameters(1); System.Drawing.Imaging.EncoderParameter myEncoderParameter = new System.Drawing.Imaging.EncoderParameter(myEncoder, 100L); myEncoderParameters.Param[0] = myEncoderParameter; if (savedialog.ShowDialog() == DialogResult.OK) { try { pictureBoxHierarchy.Image.Save(savedialog.FileName, jpgEncoder, myEncoderParameters); } catch { MessageBox.Show("Невозможно сохранить изображение", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
public virtual void saveJPEG(System.String filename) { try { // Set the quality to 100 (must be a long) System.Drawing.Imaging.Encoder qualityEncoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameter ratio = new System.Drawing.Imaging.EncoderParameter(qualityEncoder, 100L); // Add the quality parameter to the list System.Drawing.Imaging.EncoderParameters codecParams = new System.Drawing.Imaging.EncoderParameters(1); codecParams.Param[0] = ratio; // Get Codec Info using MIME type System.Drawing.Imaging.ImageCodecInfo JpegCodecInfo = GetEncoderInfo("image/jpeg"); // System.Console.Out.WriteLine("Saving '" + filename + "'."); offImg.Save(filename, JpegCodecInfo, codecParams); System.Console.Out.WriteLine("JPEG image saved."); } catch (System.Exception e) { System.Console.Out.WriteLine(e); } }
private void FeedImageContent(HttpListenerContext context) { context.Response.ContentType = "image/png"; // Find the appropriate codec for saving the episode image as a png System.Drawing.Imaging.ImageCodecInfo pngCodec = null; foreach (System.Drawing.Imaging.ImageCodecInfo codec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) { if (codec.MimeType == context.Response.ContentType) { pngCodec = codec; break; } } try { Properties.Resources.icon_main_img256.Save(context.Response.OutputStream, pngCodec, null); } catch (HttpListenerException) { // Don't worry about dropped connections etc. } }
public static byte[] ReduceWeightImage(System.Drawing.Image image, long minByteWeight, long maxByteWeight) { byte[] source = GetBytes(image); if (source.Length < maxByteWeight) { return(source); } if (minByteWeight > 0 && maxByteWeight > 0) { if (minByteWeight > maxByteWeight) { (minByteWeight, maxByteWeight) = (maxByteWeight, minByteWeight); } if (maxByteWeight - minByteWeight < 50) { maxByteWeight = minByteWeight + 50; } System.Drawing.Imaging.ImageCodecInfo[] codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageDecoders(); string mimeType = GetMimeType(image); System.Drawing.Imaging.ImageCodecInfo imageCodecInfo = codecs[1]; System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters encoderParameters = new System.Drawing.Imaging.EncoderParameters(1); return(ReduceWeightImageProcess(source, source, minByteWeight, maxByteWeight, imageCodecInfo, encoder, encoderParameters, source.LongLength * 85L / 1166927L)); } return(source); }
/// <summary> /// JPGファイルに変換 /// </summary> /// <param name="pngPath">元のPNGファイルフルパス</param> /// <param name="quality">品質(0-100)</param> /// <returns></returns> static string ConvertToJpeg(string pngPath, int quality) { string jpgPath = null; using (Bitmap bmp = new Bitmap(pngPath)) { try { string ext = System.IO.Path.GetExtension(pngPath); jpgPath = pngPath.Replace(ext, "") + ".jpg"; System.Drawing.Imaging.EncoderParameters eps = new System.Drawing.Imaging.EncoderParameters(1); System.Drawing.Imaging.EncoderParameter ep = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality); eps.Param[0] = ep; System.Drawing.Imaging.ImageCodecInfo ici = GetEncoderInfo("image/jpeg"); bmp.Save(jpgPath, ici, eps); } catch (Exception ex) { throw ex; } bmp.Dispose(); } return(jpgPath); }
static void Main(string[] args) { foreach (string file in args) { try { System.Console.Write("Reading file: {0} ... ", file); using (System.Drawing.Image image = System.Drawing.Image.FromFile(file)) { System.Console.WriteLine("Done"); System.IO.FileInfo info = new System.IO.FileInfo(file); string output = file.Replace(info.Extension, ".jpg"); System.Console.Write("Writing file: {0} ... ", output); // Create parameters to specify quality. System.Drawing.Imaging.ImageCodecInfo codec = Program.getCodecInfo("image/jpeg"); System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters parameters = new System.Drawing.Imaging.EncoderParameters(1); parameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(encoder, 100L); // Write the file. image.Save(output, codec, parameters); System.Console.WriteLine("Done"); } } catch (System.Exception e) { System.Console.WriteLine("Error processing file '", file, ", ", e.Message); } } }
private void EpisodeImageContent(HttpListenerContext context) { Regex epidPattern = new Regex(@"^\?epid=([0-9]+)$"); Match match = epidPattern.Match(context.Request.Url.Query); int epid; if (!int.TryParse(match.Groups[1].Value, out epid)) { // Request doesn't contain a valid episode id this.ErrorPage404(context); return; } Model.Episode episode; try { episode = new Model.Episode(epid); } catch (DataNotFoundException) { // Episode ID does not exist this.ErrorPage404(context); return; } CompressedImage image = episode.Image; if (image == null) { // Specified episode does not have an image this.ErrorPage404(context); return; } context.Response.ContentType = "image/png"; // Find the appropriate codec for saving the image as a png System.Drawing.Imaging.ImageCodecInfo pngCodec = null; foreach (System.Drawing.Imaging.ImageCodecInfo codec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) { if (codec.MimeType == context.Response.ContentType) { pngCodec = codec; break; } } try { image.Image.Save(context.Response.OutputStream, pngCodec, null); } catch (HttpListenerException) { // Don't worry about dropped connections etc. } }
public static void ExtractImagesFromPDF(string password, string key, string docPath, string pagePath, PageCollection pages) { Page page = null; // NOTE: This will only get the first image it finds per page. PdfReader pdf = new PdfReader(Utility.Security.AES.DecryptFile(key, docPath)); //RandomAccessFileOrArray raf = new iTextSharp.text.pdf.RandomAccessFileOrArray(p); try { for (int pageNumber = 1; pageNumber <= pdf.NumberOfPages; pageNumber++) { PdfDictionary pg = pdf.GetPageN(pageNumber); // recursively search pages, forms and groups for images. PdfObject obj = FindImageInPDFDictionary(pg); if (obj != null) { int XrefIndex = Convert.ToInt32(((PRIndirectReference)obj).Number.ToString(System.Globalization.CultureInfo.InvariantCulture)); PdfObject pdfObj = pdf.GetPdfObject(XrefIndex); PdfStream pdfStrem = (PdfStream)pdfObj; byte[] bytes = PdfReader.GetStreamBytesRaw((PRStream)pdfStrem); if ((bytes != null)) { using (System.IO.MemoryStream memStream = new System.IO.MemoryStream(bytes)) { memStream.Position = 0; System.Drawing.Image img = System.Drawing.Image.FromStream(memStream); // must save the file while stream is open. page = new Page(); page.Order = pages.Count; page.Save(); page.Token = Utility.Security.AES.GetToken(page.Id, password); //string path = System.IO.Path.Combine(page.Filename, String.Format(@"{0}.jpg", pageNumber)); System.Drawing.Imaging.EncoderParameters parms = new System.Drawing.Imaging.EncoderParameters(1); parms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0); System.Drawing.Imaging.ImageCodecInfo jpegEncoder = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().FirstOrDefault(e => e.FormatDescription == "JPEG"); System.IO.MemoryStream ms = new System.IO.MemoryStream(); img.Save(ms, jpegEncoder, parms); System.IO.File.WriteAllBytes(System.IO.Path.Combine(pagePath, page.Filename), SoftFluent.Samples.GED.Utility.Security.AES.EncryptStream(page.Token, ms.ToArray()).ToArray()); ms.Close(); pages.Add(page); } } } } } catch { throw; } finally { pdf.Close(); //raf.Close(); } }
private void ChapterImageContent(HttpListenerContext context) { Regex paramsPattern = new Regex(@"^\?epid=([0-9]+)&start=([0-9]+)$"); Match match = paramsPattern.Match(context.Request.Url.Query); int epid, start; if (!int.TryParse(match.Groups[1].Value, out epid)) { // Request doesn't contain a valid episode id this.ErrorPage404(context); return; } if (!int.TryParse(match.Groups[2].Value, out start)) { // Request doesn't contain a valid start time this.ErrorPage404(context); return; } var download = new Model.Download(epid); var chapter = new Model.Chapter(download, start); CompressedImage image = chapter.Image; if (image == null) { // Specified chapter does not have an image this.ErrorPage404(context); return; } context.Response.ContentType = "image/png"; // Find the appropriate codec for saving the image as a png System.Drawing.Imaging.ImageCodecInfo pngCodec = null; foreach (System.Drawing.Imaging.ImageCodecInfo codec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) { if (codec.MimeType == context.Response.ContentType) { pngCodec = codec; break; } } try { image.Image.Save(context.Response.OutputStream, pngCodec, null); } catch (HttpListenerException) { // Don't worry about dropped connections etc. } }
public static void SaveImage(System.Drawing.Image Image, string Destination) { System.Drawing.Imaging.ImageCodecInfo jgpEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters myEncoderParameters = new System.Drawing.Imaging.EncoderParameters(1); System.Drawing.Imaging.EncoderParameter myEncoderParameter = new System.Drawing.Imaging.EncoderParameter(myEncoder, (long)Settings.ImageQuality); myEncoderParameters.Param[0] = myEncoderParameter; Image.Save(Destination, jgpEncoder, myEncoderParameters); }
private static System.Drawing.Image SaveImages( System.Drawing.Imaging.ImageCodecInfo tiffCodec , System.IO.MemoryStream outputStream , System.Drawing.Image tiffImage, System.Drawing.Image firstImage) { using (System.Drawing.Imaging.EncoderParameters encParameters = new System.Drawing.Imaging.EncoderParameters(3)) { if (firstImage == null) { encParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag , (long)System.Drawing.Imaging.EncoderValue.MultiFrame // 18L ); } else { encParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter( System.Drawing.Imaging.Encoder.SaveFlag , (long)System.Drawing.Imaging.EncoderValue.FrameDimensionPage // 23L ); } encParameters.Param[1] = new System.Drawing.Imaging.EncoderParameter( System.Drawing.Imaging.Encoder.ColorDepth, 24L ); encParameters.Param[2] = new System.Drawing.Imaging.EncoderParameter( System.Drawing.Imaging.Encoder.Compression , (long)System.Drawing.Imaging.EncoderValue.CompressionLZW ); if (firstImage == null) { firstImage = tiffImage; ((System.Drawing.Bitmap)tiffImage).SetResolution(96, 96); firstImage.Save(outputStream, tiffCodec, encParameters); } else { ((System.Drawing.Bitmap)tiffImage).SetResolution(96, 96); firstImage.SaveAdd(tiffImage, encParameters); } if (encParameters.Param[0] != null) { encParameters.Param[0].Dispose(); } if (encParameters.Param[1] != null) { encParameters.Param[1].Dispose(); } if (encParameters.Param[2] != null) { encParameters.Param[2].Dispose(); } } // End Using encParameters return(firstImage); }
public static byte[] MakeClearlyImage(string originalImagePath, long p = 30) { MemoryStream stream = new MemoryStream(); //获取原始图片 System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath); //新建一个bmp图片,并设置缩略图大小. System.Drawing.Image bitmap = new System.Drawing.Bitmap(originalImage.Width, originalImage.Height); //新建一个画板 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空画布并设置背景色 g.Clear(System.Drawing.Color.FromArgb(100, 255, 255, 255)); //在指定位置并且按指定大小绘制原图片的指定部分 //第一个System.Drawing.Rectangle是原图片的画布坐标和宽高,第二个是原图片写在画布上的坐标和宽高,最后一个参数是指定数值单位为像素 g.DrawImage(originalImage, new System.Drawing.Point() { X = 0, Y = 0 }); System.Drawing.Imaging.ImageCodecInfo encoder = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().FirstOrDefault(a => a.MimeType == "image/jpeg"); try { if (encoder != null) { System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters(1); //设置 jpeg 质量为 60 encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, p); bitmap.Save(stream, encoder, encoderParams); encoderParams.Dispose(); return(stream.ToArray()); } } catch (System.Exception e) { new TxtLogHelper().Error(e); throw e; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } return(null); }
public void GetEncoderByImageFormat() { System.Drawing.Imaging.ImageCodecInfo codec = ImageHelper.GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); if (codec != null) { Console.WriteLine(codec.CodecName); Console.WriteLine(codec.MimeType); Console.WriteLine(codec.FormatID); Console.WriteLine(codec.Version); } }
/// <summary> /// 在图片上生成图片水印 /// </summary> /// <param name="Path">原服务器图片路径</param> /// <param name="Path_syp">生成的带图片水印的图片路径</param> /// <param name="Path_sypf">水印图片路径</param> /// <param name="xPer">x轴位置百分比 (用小数表示)0~1</param> /// <param name="yPer">y轴位置百分比 (用小数表示)0~1</param> /// <param name="transparence">透明度(用小数表示)0~1</param> public static void AddWaterPic(string Path, string Path_syp, string Path_sypf, double xPer, double yPer, float transparence) { if (!File.Exists(Path)) { throw new FileNotFoundException("指定原图片路径的文件不存在"); } else { System.Drawing.Image image = System.Drawing.Image.FromFile(Path); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); if (!File.Exists(Path_sypf)) { throw new FileNotFoundException("指定水印图片路径的文件不存在"); } System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.Clear(System.Drawing.Color.Transparent); System.Drawing.Imaging.EncoderParameters parms = new System.Drawing.Imaging.EncoderParameters(1); parms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)80)); string extension = System.IO.Path.GetExtension(Path).ToLower(); System.Drawing.Imaging.ImageCodecInfo imgCodeInfo = GetImageCodeInfo(SetImgType()[extension].ToString()); g.DrawImage(image, 0, 0, image.Width, image.Height); float[][] ptsArray = { new float[] { 1, 0, 0, 0, 0 }, new float[] { 0, 1, 0, 0, 0 }, new float[] { 0, 0, 1, 0, 0 }, new float[] { 0, 0, 0, transparence, 0 }, new float[] { 0, 0, 0, 0, 1 } }; System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(ptsArray); System.Drawing.Imaging.ImageAttributes imageAttribute = new System.Drawing.Imaging.ImageAttributes(); imageAttribute.SetColorMatrix(colorMatrix); int x = (int)Convert.ToInt32(image.Width * xPer); int y = (int)Convert.ToInt32(image.Height * yPer); g.DrawImage(copyImage, new System.Drawing.Rectangle(x, y, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel, imageAttribute); g.Dispose(); image.Dispose(); bitmap.Save(Path_syp, imgCodeInfo, parms); copyImage.Dispose(); bitmap.Dispose(); } }
/// <summary> /// GetImageCodecInfo (e.g. from "image/jpg") /// </summary> /// <param name="mimeType"></param> /// <returns></returns> private static System.Drawing.Imaging.ImageCodecInfo GetImageCodecInfo(string mimeType) { System.Drawing.Imaging.ImageCodecInfo codecInfo = null; var encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); for (int i = 0; i < encoders.Length; ++i) { if (encoders[i].MimeType == mimeType) { codecInfo = encoders[i]; } } return(codecInfo); }
string Crop(string filename) { try { double rubberBandLeft = Canvas.GetLeft(TheCropper); double rubberBandTop = Canvas.GetTop(TheCropper); //create a new .NET 2.0 bitmap (which allowing saving) based on the bound bitmap url using (System.Drawing.Bitmap source = new System.Drawing.Bitmap(filename)) { //create a new .NET 2.0 bitmap (which allowing saving) to store cropped image in, should be //same size as rubberBand element which is the size of the area of the original image we want to keep using (System.Drawing.Bitmap target = new System.Drawing.Bitmap((int)TheCropper.ActualWidth, (int)TheCropper.ActualHeight)) { //create a new destination rectange System.Drawing.RectangleF recDest = new System.Drawing.RectangleF(0.0f, 0.0f, (float)target.Width, (float)target.Height); //different resolution fix prior to cropping image float hd = 1.0f; // / (target.HorizontalResolution / source.h); float vd = 1.0f; // / (target.VerticalResolution / source.VerticalResolution); float hScale = 1.0f; // (float)zoomFactor; float vScale = 1.0f; // (float)zoomFactor; System.Drawing.RectangleF recSrc = new System.Drawing.RectangleF((hd * (float)rubberBandLeft) * hScale, (vd * (float)rubberBandTop) * vScale, (hd * (float)TheCropper.Width) * hScale, (vd * (float)TheCropper.Height) * vScale); using (System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(target)) { gfx.DrawImage(source, recDest, recSrc, System.Drawing.GraphicsUnit.Pixel); } filename = Helpers.GetUniqueFilename(".jpg"); FileManager.GarbageFiles.Add(filename); System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; //Set the parameters for defining the quality of the thumbnail... System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1); eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 99L); target.Save(filename, codec, eParams); return(filename); } } } catch { return(filename); } }
private System.Drawing.Imaging.ImageCodecInfo GetEncoderInfo(string mimeType) { //根据 mime 类型,返回编码器 System.Drawing.Imaging.ImageCodecInfo result = null; System.Drawing.Imaging.ImageCodecInfo[] encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); for (int i = 0; i < encoders.Length; i++) { if (encoders[i].MimeType == mimeType) { result = encoders[i]; break; } } return(result); }
} // End Function GetEncoder static byte[] CompressImage(System.Drawing.Image image, int jpegQuality) { byte[] outputBytes = null; System.Drawing.Imaging.ImageCodecInfo jpegEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); System.Drawing.Imaging.EncoderParameters encoderParameters = new System.Drawing.Imaging.EncoderParameters(1); encoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, jpegQuality); using (System.IO.MemoryStream outputStream = new System.IO.MemoryStream()) { image.Save(outputStream, jpegEncoder, encoderParameters); outputBytes = outputStream.ToArray(); } return(outputBytes); }
public static void CreateThumbnailOld(string fileName) { string thumbnailFilePath = fileName + ".thumb.jpg"; //Size newSize = new Size(120, 90); // Thumbnail size (width = 120) (height = 90) using (Bitmap bmp = new Bitmap(fileName)) { //bepaal factor double factor = 1; if (bmp.Size.Width > 120) { factor = 120 / (double)bmp.Size.Width; } else if (bmp.Size.Height > 90) { factor = 90 / (double)bmp.Size.Height; } //maak size van int newWidth = (int)((double)bmp.Size.Width * factor); int newHeight = (int)((double)bmp.Size.Height * factor); Size newSize = new Size(newWidth, newHeight); using (Bitmap thumb = new Bitmap((System.Drawing.Image)bmp, newSize)) { using (Graphics g = Graphics.FromImage(thumb)) // Create Graphics object from original Image { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Default; //Set Image codec of JPEG type, the index of JPEG codec is "1" System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1]; //Set the parameters for defining the quality of the thumbnail... here it is set to 100% System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1); eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); //Now draw the image on the instance of thumbnail Bitmap object g.DrawImage(bmp, new Rectangle(0, 0, thumb.Width, thumb.Height)); thumb.Save(thumbnailFilePath, codec, eParams); } } } }
public void saveScreenImage(string file) { // Grab screen pixels. System.Drawing.Rectangle bounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds; System.Drawing.Bitmap bitmap = this._getDesktopImage(bounds); // Create parameters to specify quality. System.Drawing.Imaging.ImageCodecInfo codec = Program.getCodecInfo("image/jpeg"); System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.Quality; System.Drawing.Imaging.EncoderParameters parameters = new System.Drawing.Imaging.EncoderParameters(1); parameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(encoder, 100L); // Make the output file name. string output = ((null == file) ? System.String.Format("{0}_screen_shot.jpg", System.DateTime.Now.ToFileTime()) : file); // Write the file. bitmap.Save(output, codec, parameters); }
private void UpdateCodec() { encoder = null; CodecLabel.Content = "No codec found"; StartButton.IsEnabled = false; System.Drawing.Imaging.ImageCodecInfo[] codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); foreach (var e in codecs) { if (e.FormatID == format.Guid) { encoder = e; CodecLabel.Content = "Using Codec " + e.CodecName; StartButton.IsEnabled = true; encoderParams = new System.Drawing.Imaging.EncoderParameters(1); encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); break; } } }
private System.Drawing.Imaging.ImageCodecInfo GetEncoderInfo() { int j; if (jpegCodec == null) { String mimeType = "image/png"; System.Drawing.Imaging.ImageCodecInfo[] encoders; encoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); for (j = 0; j < encoders.Length; ++j) { if (encoders[j].MimeType == mimeType) { jpegCodec = encoders[j]; break; } } } return(jpegCodec); }
public static void SaveThumbnail(Bitmap bit, Size size, string targePath) { System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters(); long[] quality = new long[1]; quality[0] = 75; System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); encoderParams.Param[0] = encoderParam; System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); System.Drawing.Imaging.ImageCodecInfo jpegICI = null; for (int x = 0; x < arrayICI.Length; x++) { if (arrayICI[x].FormatDescription.Equals("JPEG")) { jpegICI = arrayICI[x]; break; } } var image = Thumbnail(bit, size); image.Save(targePath, jpegICI, encoderParams); }
private void InitialiseEncoder() { imageCodec = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg); encoderParameters = new System.Drawing.Imaging.EncoderParameters(1); EncoderQuality = 25; }