首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WInRT中的WriteableBitmapEx调整大小函数

WInRT中的WriteableBitmapEx调整大小函数
EN

Stack Overflow用户
提问于 2012-10-17 00:43:21
回答 3查看 1.3K关注 0票数 0

我试着写的函数,将调整图像的大小。我将WriteableBitmapEx用于WinRT/Win8函数Resize();

代码语言:javascript
复制
public class PictureExtension 
{
    private MemoryRandomAccessStream _memoryRandomAccessStream;
    private readonly Stream _dataStream;
    private readonly double _height;
    private readonly double _width;

    public PictureExtension(Stream dataStream, double height, double width)
    {
        _dataStream = dataStream;
        _memoryRandomAccessStream = (_dataStream.ToRandomAccessStream());
        _height = height;
        _width = width;
    }

    public byte[] ToArray(double maxSide)
    {
        if (_height <= maxSide && _width <= maxSide)
        {
            return _dataStream.ToArray();
        }
        else
        {
            var target = new WriteableBitmap((int) _width, (int) _height);

            var aspectRatio = (double)_width / _height;
            double newHeight;
            double newWidth;
            if (_width > _height)
            {
                newWidth = maxSide;
                newHeight = newWidth / aspectRatio;
            }
            else
            {
                newHeight = maxSide;
                newWidth = maxSide * aspectRatio;
            }

            int count = (int)_dataStream.Length;

            using (var bmpStream = target.PixelBuffer.AsStream())
            {
                bmpStream.Seek(0, SeekOrigin.Begin);
                bmpStream.Write(_dataStream.ToArray(), 0, _dataStream.ToArray().Length);
            }


            var resized = target.Resize((int)newWidth, (int)newHeight, WriteableBitmapExtensions.Interpolation.Bilinear);

            return resized.ToByteArray();

        }

    }
}

}

此函数返回字节数组,但它不再是图像。我测试了PNG和JPG格式。怎么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-17 15:44:46

我之前已经检查过这个问题了,试试这个线程中的代码:

How to resize Image in C# WinRT/winmd?

票数 1
EN

Stack Overflow用户

发布于 2012-10-18 04:37:30

最好的帮助是如果你在CodePlex站点上关注你的帖子;) http://writeablebitmapex.codeplex.com/discussions/399624

不需要交叉过帐。

票数 1
EN

Stack Overflow用户

发布于 2012-10-17 04:53:42

不知道这是否会对你有帮助,但我写了一个LoadAsync()重载,以给定的解码分辨率加载一个位图,这可能会根据你的场景对你有所帮助。

http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view/0657c67a93d5#WinRTXamlToolkit%2fImaging%2fWriteableBitmapLoadExtensions.cs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12919516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档