我正在开发一个WinRT应用程序,它将进行一些图像处理,我想要做的一件事就是将一些jpgs或png转换为gif。我有一些有用的东西。对于我的一些测试jpgs,它适用于其他人,它是一个获得输出的混乱图像。只是想知道是否有我遗失的东西。这是我到目前为止所拥有的
public async static void ConvertToGif(IRandomAccessStream stream)
{
var decoder = await BitmapDecoder.CreateAsync(stream);
var pixels = await decoder.GetPixelDataAsync();
var file = await KnownFolders.PicturesLibrary.CreateFileAsync("test.gif", CreationCollisionOption.ReplaceExisting);
var outStream = await file.OpenAsync(FileAccessMode.ReadWrite);
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.GifEncoderId, outStream);
encoder.SetPixelData(decoder.BitmapPixelFormat, BitmapAlphaMode.Ignore,
decoder.PixelWidth, decoder.PixelHeight,
decoder.DpiX, decoder.DpiY,
pixels.DetachPixelData());
await encoder.FlushAsync();
outStream.Dispose();
}
较小的jpgs似乎有效,但较大的jpgs出现了问题。还有另一种方法可以达到这个目的吗?
答案 0 :(得分:4)
Duh,问题是我使用的是PixelWidth / Height,而且我一直在使用OrientedPixelWidth / Height。
这似乎解决了我的问题。