.net C# и картинки
System.Drawing.Graphics gg = System.Drawing.Graphics.FromImage(img);
// отрисовываю попиксельно картинку
System.Drawing.Imaging.ImageCodecInfo jpegCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[2];
System.Drawing.Imaging.EncoderParameter ratio = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, long.MaxValue);
System.Drawing.Imaging.EncoderParameters codecParams = new System.Drawing.Imaging.EncoderParameters(1);
codecParams.Param[0] = ratio;
img.Save(path + ".gif", jpegCodecInfo, codecParams);
создаю так картинку, gif, на ней получаются крестики какие-то, вопросы:
1. Как убрать эти крестики и включить сохранение с интерлисингом?
2. long.MaxValue я так понимаю это качество, оно у меня стоит максимальное?
3. System.Drawing.Imaging.ImageCodecInfo jpegCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[2]; я выбираю формат сохранения и как можно написать чтобы бралось конкретно, например, по "image/gif"?
Цитата: zxxc
long.MaxValue я так понимаю это качество, оно у меня стоит максимальное?
long.MaxValue это максимальное значение любой переменной типа long. Качество же измеряется в процентах: от 1 до 100. Потому передавать стоит значение
Код:
100L
Цитата: zxxc
3. System.Drawing.Imaging.ImageCodecInfo jpegCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[2]; я выбираю формат сохранения и как можно написать чтобы бралось конкретно, например, по "image/gif"?
В МСДНе был простой пример (функция оттуда):
Код:
private static ImageCodecInfo GetEncoderInfo(string mimeType) {
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
Цитата: hardcase
long.MaxValue это максимальное значение любой переменной типа long. Качество же измеряется в процентах: от 1 до 100. Потому передавать стоит значение
В МСДНе был простой пример (функция оттуда):
Код:
100L
В МСДНе был простой пример (функция оттуда):
Код:
private static ImageCodecInfo GetEncoderInfo(string mimeType) {
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
Так это я видел) Я не понимаю зачем перебирать массив весь ), ладно, нзачит нельзя так нельзя
По поводу процентов, если там проценты качества зачем тип long?
И все тот же вопрос, как убрать крестики с картинки?
Цитата: hardcase
long.MaxValue это максимальное значение любой переменной типа long. Качество же измеряется в процентах: от 1 до 100. Потому передавать стоит значение
В МСДНе был простой пример (функция оттуда):
Код:
100L
В МСДНе был простой пример (функция оттуда):
Код:
private static ImageCodecInfo GetEncoderInfo(string mimeType) {
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
foreach(ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) {
if(encoder.MimeType == mimeType)
return encoder;
}
return null;
}
вот картинка
Цитата: zxxc
И все тот же вопрос, как убрать крестики с картинки?
Гмм, похоже тут нужно работать с палитрой GIF. Так как она не оптимизируется под картинку, я не помню чтобы в дотнете были встроенные инструменты для оптимизации GIF.
Цитата: hardcase
Гмм, похоже тут нужно работать с палитрой GIF. Так как она не оптимизируется под картинку, я не помню чтобы в дотнете были встроенные инструменты для оптимизации GIF.
У меня в этой картинке мало цветов, штук 20 достаточно, может тогда PNG? Или еще что посоветуете?