29 Mayıs 2016 Pazar

Image Codec

GetImageEncoders metodu - Codec Bulur
Şöyle yaparız
var c= ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");
Şöyle yaparız.
ImageCodecInfo pngEncoder = ImageCodecInfo.GetImageDecoders().Where(k=>
 k.FormatID == ImageFormat.Png.Guid).First();
Codec Kullanılarak Mevcut Image Nasıl Dönüştürülür
Şöyle yaparız. Elimizde bir Image olsun - örneğin bitmap. Bu Image codec kullanılarak önce bir stream'e kaydedilir. Kaydetme için EncoderParameters sınıfının sağladığı parametreler kullanılır. Bu sınıfın constructor metoduna kaç tane parametre sağlayacağımızı gireriz. Örnekte 2 parametre olduğu için 2 veriliyor. Parametreler System.Drawing.Imaging altındaki Encoder.SaveFlag vs. gibi şeylerdir.
Image frame=...
var ms = new System.IO.MemoryStream();
var codec = ...;

EncoderParameters params = new EncoderParameters(2);
param.Param[0]= new EncoderParameter(Encoder.SaveFlag,EncoderValue.MultiFrame);
param.Param[1]= new EncoderParameter(Encoder.Quality,EncoderValue.CompressionLZW);
frame.Save(ms, codec, param);
Önemli olan EncoderParameters sınıfına ne konulacağını bilmek.

Png kalitesinin düşürmek için şöyle yaparız.
EncoderParameters encoderParameters;
encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,  60L);

Daha sonra stream yeni bir resme dönüştürülür.
ms.Position = 0;
var img = Image.FromStream(ms);

Hiç yorum yok:

Yorum Gönder