在WPF应用程序c#或vb.net中读取jpg,调整大小,另存为png

MC9000

疯狂的家伙试图在WPF中(使用所有新的图像处理工具)做到这一点,但似乎找不到有效的解决方案。到目前为止,所有解决方案都在屏幕上绘制它们或进行多次保存,但我需要在内存中完全这样做。

基本上,我想将较大的jpeg加载到内存中,将其调整为较小的大小(在内存中),另存为较小的PNG文件。我可以将jpeg文件加载到BitMap对象中,很好。在那之后,我很沮丧。

我发现此函数看起来确实可以解决问题,但是它需要ImageSource(不幸的是,我找不到将内存中的BitMap对象转换为不会产生NULL异常的ImageSource的方法。)

private static BitmapFrame CreateResizedImage(ImageSource source, int width, int height, int margin)
{
    dynamic rect = new Rect(margin, margin, width - margin * 2, height - margin * 2);

    dynamic @group = new DrawingGroup();
    RenderOptions.SetBitmapScalingMode(@group, BitmapScalingMode.HighQuality);
    @group.Children.Add(new ImageDrawing(source, rect));

    dynamic drawingVisual = new DrawingVisual();
    using (drawingContext == drawingVisual.RenderOpen()) 
    {
        drawingContext.DrawDrawing(@group);
    }

    // Resized dimensions
    // Default DPI values
    dynamic resizedImage = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Default);
    // Default pixel format
    resizedImage.Render(drawingVisual);

    return BitmapFrame.Create(resizedImage);
}
克莱门斯

使用WPF就像这样简单:

private void ResizeImage(string inputPath, string outputPath, int width, int height)
{
    var bitmap = new BitmapImage();

    using (var stream = new FileStream(inputPath, FileMode.Open))
    {
        bitmap.BeginInit();
        bitmap.DecodePixelWidth = width;
        bitmap.DecodePixelHeight = height;
        bitmap.CacheOption = BitmapCacheOption.OnLoad;
        bitmap.StreamSource = stream;
        bitmap.EndInit();
    }

    var encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using (var stream = new FileStream(outputPath, FileMode.Create))
    {
        encoder.Save(stream);
    }
}

您可以考虑只设置DecodePixelWidthDecodePixelHeight之一,以保留原始图像的宽高比。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试将C#代码转换为VB.NET WPF应用程序的非常奇怪的错误

来自分类Dev

如何在 C# WPF 应用程序中调整 Auth0 登录窗口的大小?

来自分类Dev

C# MVC 将视图另存为 png

来自分类Dev

VB.NET中存在的C#中的Winforms“应用程序框架”在哪里?

来自分类Dev

在Windows窗体应用程序vb.net中存储敏感数据的建议C#

来自分类Dev

在Windows窗体应用程序vb.net中存储敏感数据的建议C#

来自分类Dev

在VB.NET或C#表单应用程序中运行或嵌入VB.NET控制台应用程序

来自分类Dev

读取一个.txt文件,并将数据另存为C中的矩阵

来自分类Dev

将Windows Phone应用程序的C#转换为VB.NET

来自分类Dev

C#应用程序中的多个VB6套间

来自分类Dev

如何在C#和WPF应用程序中旋转文件中的图像

来自分类Dev

通过单击 c# 中的按钮在 wpf 应用程序中添加树视图

来自分类Dev

如何使用C#中的SaveFileDialog将字节数组另存为png文件在磁盘上?

来自分类Dev

在WPF应用程序中以编程方式C#打印pdf文件

来自分类Dev

在WPF C#应用程序中存储键/值对的最佳方法是哪种?

来自分类Dev

在WPF C#应用程序中创建自定义弹出消息

来自分类Dev

如何在WPF C#应用程序中安全地部署PPK文件?

来自分类Dev

WPF C#图像和文件集成到应用程序中

来自分类Dev

如何在 C# WPF 应用程序中获取所选 DataGrid 值的总和?

来自分类Dev

使用 Geocode.Core 在 WPF C# 应用程序中获取当前位置

来自分类Dev

将C#对象另存为Oracle中的Blob

来自分类Dev

将矩阵另存为C#中的位序列

来自分类Dev

将HTML代码另存为自己的应用程序

来自分类Dev

在图片框中调整图像大小并将其另存为PNG

来自分类Dev

在图片框中调整图像大小并将其另存为PNG

来自分类Dev

VB .NET 2010:将大位图另存为文件

来自分类Dev

在Windows 7中调整“另存为”窗口的大小

来自分类Dev

如何计算VB.NET WPF应用程序中SQL DB表中的行?

来自分类Dev

使用C#的动态图(将另存为PNG格式)

Related 相关文章

  1. 1

    尝试将C#代码转换为VB.NET WPF应用程序的非常奇怪的错误

  2. 2

    如何在 C# WPF 应用程序中调整 Auth0 登录窗口的大小?

  3. 3

    C# MVC 将视图另存为 png

  4. 4

    VB.NET中存在的C#中的Winforms“应用程序框架”在哪里?

  5. 5

    在Windows窗体应用程序vb.net中存储敏感数据的建议C#

  6. 6

    在Windows窗体应用程序vb.net中存储敏感数据的建议C#

  7. 7

    在VB.NET或C#表单应用程序中运行或嵌入VB.NET控制台应用程序

  8. 8

    读取一个.txt文件,并将数据另存为C中的矩阵

  9. 9

    将Windows Phone应用程序的C#转换为VB.NET

  10. 10

    C#应用程序中的多个VB6套间

  11. 11

    如何在C#和WPF应用程序中旋转文件中的图像

  12. 12

    通过单击 c# 中的按钮在 wpf 应用程序中添加树视图

  13. 13

    如何使用C#中的SaveFileDialog将字节数组另存为png文件在磁盘上?

  14. 14

    在WPF应用程序中以编程方式C#打印pdf文件

  15. 15

    在WPF C#应用程序中存储键/值对的最佳方法是哪种?

  16. 16

    在WPF C#应用程序中创建自定义弹出消息

  17. 17

    如何在WPF C#应用程序中安全地部署PPK文件?

  18. 18

    WPF C#图像和文件集成到应用程序中

  19. 19

    如何在 C# WPF 应用程序中获取所选 DataGrid 值的总和?

  20. 20

    使用 Geocode.Core 在 WPF C# 应用程序中获取当前位置

  21. 21

    将C#对象另存为Oracle中的Blob

  22. 22

    将矩阵另存为C#中的位序列

  23. 23

    将HTML代码另存为自己的应用程序

  24. 24

    在图片框中调整图像大小并将其另存为PNG

  25. 25

    在图片框中调整图像大小并将其另存为PNG

  26. 26

    VB .NET 2010:将大位图另存为文件

  27. 27

    在Windows 7中调整“另存为”窗口的大小

  28. 28

    如何计算VB.NET WPF应用程序中SQL DB表中的行?

  29. 29

    使用C#的动态图(将另存为PNG格式)

热门标签

归档