Re[4]: Bitmap.Save (stream, codecInfo, encoderparam) - не р
От: Кремер Евгений Германия  
Дата: 04.04.06 17:14
Оценка:
КЕ>>Столкнулся с этой же проблемой, может подскажете как Вы ее решили?

А>К сожалению не могу уже вспомнить в каком проекте это было.

А>По моему я конвертацию я в итоге сделал вручную.

может в двух словах подскажете куда копать?

я похоже совсем неверно делаю. пробовал в gif сохранить, так тот вообще без вопросов какую бы я глубину цвета не указывал, сохраняет с 8й глубиной. никаких исключений или подобных ругательств. складывается впечатление что работает только tiff реализация и то только 24 и 32бита, на 8бит выскочило исключение.

делаю примерно следующее:

ImageCodecInfo Enc = GetEncoderInfo("image/bmp");
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 8L);

bool heightbigger = (img.Height >= img.Width);
int thheight = heightbigger ? 100 : img.Height * 100 / img.Width;
int thwidth = heightbigger ? img.Width * 100 / img.Height : 100;

using (Image thimg = img.GetThumbnailImage(thwidth, thheight, null, IntPtr.Zero))
{
       thimg.Save(@"c:\1.bmp", Enc, encoderParams);
}


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;
}


может кто заметит грубую ошибку или место, где я на шланг наступил и не могу с него сойти!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.