У меня есть рабочий код, написанный на C #, который принимает массив байтов, представляющий растровое изображение, и кодирует его в base64, чтобы его можно было показать в браузере.
byte[] bitmap = {...} //getting it from c++ .dll
BitmapSource bs = BitmapSource.Create(w, h, 96, 96, PixelFormats.Bgra32, null, bitmap, Bitmap_Raw_Stride);
return Convert.ToBase64String(bs);
Работает нормально, но мне нужно сделать то же самое в C ++. У меня есть мой байтовый массив, который содержит то же самое, что байтовый массив в C #.
Проблема в том, что BitmapSource сжимает растровое изображение, и я не понимаю, как, от 10 Мо до 1,5 Мо для некоторых растровых изображений. Как это делается?
На самом деле, мне удается закодировать мой растровый буфер c ++ в base64, но он слишком велик для отображения в браузере.
tring res = base64_encode(buffer, raw_stride* h); //buffer contains my bitmap
Я обнаружил, что BitmapSource использовал "CachedBitmap", но я не могу понять, как он рассчитывается ...