gpt4 book ai didi

silverlight - 使用 FJCore 对 Silverlight WriteableBitmap 进行编码

转载 作者:行者123 更新时间:2023-12-04 03:13:29 25 4
gpt4 key购买 nike

我试图找出如何使用 FJCore 将 WriteableBitmap 编码为 jpeg。我知道 WriteableBitmap 提供了原始像素,但我不确定如何将其转换为 FJCore 对其 JpegEncoder 方法所期望的格式。 JpegEncoder 有两种重载,一种采用 FluxJpeg.Core.Image,另一种采用 DecodedJpeg。

我试图创建一个 FluxJpeg.Core.Image 但它需要一个 byte[][,] 图像数据。 byte[n][x,y] 其中 x 是宽度,y 是高度,但我不知道 n 应该是什么。

我认为 n 应该是 4,因为这将对应于每个像素中编码的 argb 信息,但是当我尝试时 FJCore 抛出一个参数超出范围异常。这是我尝试过的。 Raster 是我的 byte[4][x,y] 数组。

raster[0][x, y] = (byte)((pixel >> 24) & 0xFF);
raster[1][x, y] = (byte)((pixel >> 16) & 0xFF);
raster[2][x, y] = (byte)((pixel >> 8) & 0xFF);
raster[3][x, y] = (byte)(pixel & 0xFF);

最佳答案

弄清楚了!我下载了 FJCore from code.google.com并通过图像类。它只需要 RGB 字节。这是我写的函数。我需要图像的 base64 版本,这就是我的函数返回的内容。

    private static string GetBase64Jpg(WriteableBitmap bitmap)
{
int width = bitmap.PixelWidth;
int height = bitmap.PixelHeight;
int bands = 3;
byte[][,] raster = new byte[bands][,];

for (int i = 0; i < bands; i++)
{
raster[i] = new byte[width, height];
}

for (int row = 0; row < height; row++)
{
for (int column = 0; column < width; column++)
{
int pixel = bitmap.Pixels[width * row + column];
raster[0][column, row] = (byte)(pixel >> 16);
raster[1][column, row] = (byte)(pixel >> 8);
raster[2][column, row] = (byte)pixel;
}
}

ColorModel model = new ColorModel { colorspace = ColorSpace.RGB };
FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster);
MemoryStream stream = new MemoryStream();
JpegEncoder encoder = new JpegEncoder(img, 90, stream);
encoder.Encode();

stream.Seek(0, SeekOrigin.Begin);
byte[] binaryData = new Byte[stream.Length];
long bytesRead = stream.Read(binaryData, 0, (int)stream.Length);

string base64String =
System.Convert.ToBase64String(binaryData,
0,
binaryData.Length);

return base64String;
}

关于silverlight - 使用 FJCore 对 Silverlight WriteableBitmap 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com