【问题标题】:writablebitmap aspect ratio save image可写位图纵横比保存图像
【发布时间】:2014-05-22 10:57:33
【问题描述】:

我从 PhotoChooserTask 中读取了一张图片,并有一张照片流。 我必须减小图像的大小

我写了这段代码

            WriteableBitmap writeableBitmap = new WriteableBitmap(400, 400);
            writeableBitmap.LoadJpeg(stream);

            using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (isoFile.FileExists("Myfile.jpg")) isoFile.DeleteFile("Myfile.jpg");
                using (var filestream = isoFile.CreateFile("Myfile.jpg"))
                {
                    writeableBitmap.SaveJpeg(filestream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 100);
                }
            }

此代码不保持图像的纵横比。

如何制作?

【问题讨论】:

    标签: windows-phone-8 writablebitmap


    【解决方案1】:

    首先将源图像加载到 writeableBitmap(不调整大小)。

    然后得到源宽度(PixelWidth)和全高(PixelHeight)。将 PixelWidth 与 PixelHeight 相除将为您提供比率。调整大小时可以使用此值。

    所以:

    float aspectRatio = (float) writeableBitmap.PixelWidth / writeableBitmap.PixelHeight;
    

    然后在保存的时候就做

    writeableBitmap.SaveJpeg(filestream, ResizedWidthValue, (int) ResizedWidthValue / aspectRatio, 0, 100);
    

    【讨论】:

    • WriteableBitmap writeableBitmap = new WriteableBitmap();不可能。
    • 打开 Nuget 并获取 WriteableBitmapEx。然后使用 WriteableBitmap writeableBitmap = BitmapFactory.New(0,0);
    【解决方案2】:

    @ertay

    我正在写这段代码

    using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        WriteableBitmap wb = BitmapFactory.New(0, 0);
                        wb.FromStream(isolatedStorage.OpenFile("1.jpg", FileMode.Open, FileAccess.Read));
    
                        IsolatedStorageFileStream fileStream= isolatedStorage.CreateFile("1_thumb.jpg");
    
                        float aspectRatio = (float)wb.PixelWidth / wb.PixelHeight;
    
                        wb.SaveJpeg(fileStream, 200, (int) (200 / aspectRatio), 0, 100);
    
                        fileStream.Close();
                        wb = null;
    
                    }
    

    但是 wb.PixelWidth 和 wb.PixelHeight = 0!!

    为什么?

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 2013-03-04
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多