一种图片处理方法及装置与流程

文档序号:12747786阅读:374来源:国知局
一种图片处理方法及装置与流程

本发明涉及互联网应用技术领域,特别涉及一种图片处理方法及装置。



背景技术:

WPF(Windows Presentation Foundation,窗口呈现基础)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作,同时它提供了全新的多媒体交互用户图形界面。

在WPF应用程序中经常遇到加载尺寸大的图片,在加载的过程中,如果图片的尺寸过大会导致应用程序加载此图片失败,出现无法显示图片的情况,亟待解决这一问题。



技术实现要素:

本发明提供一种图片处理方法及装置,用以实现图片的正常显示的目的。

本发明提供一种图片处理方法,包括:

在应用程序中加载图片,在所述图片的加载过程中,捕获所述图片的异常事件;

若捕获到所述图片的异常事件,则判断所述图片的异常事件的类型是否为内存溢出类型;

若是,则按照预设规则,对所述图片的尺寸进行处理,得到处理后的图片,并显示。

在本发明一实施例中,在所述图片的加载过程中,捕获所述图片的异常事件,包括:

以只读方式打开所述图片的图片文件,获取所述图片的图片文件数据流;

将所述图片的图片文件数据流读取到内存流MemoryStream中,并将所述MemoryStream中的数据创建为Bitmap图片;

将创建的Bitmap图片转换为BitmapSource对象,在转换的过程中,捕获所述图片的异常事件。

在本发明一实施例中,所述方法还包括:

在转换的过程中,若未捕获到所述图片的异常事件,则将BitmapSource对象,显示到显示控件中。

在本发明一实施例中,按照预设规则,对所述图片的尺寸进行处理,得到处理后的图片,并显示,包括:

将所述图片的图片文件加载为Image对象;

计算并比较所述图片的图片宽高比和所述应用程序所在屏幕的屏幕宽高比;

如果图片宽高比大于屏幕宽高比,则确定所述图片的宽度为屏幕宽度,所述图片的高度为屏幕宽度除以图片宽高比;

如果图片宽高比小于或等于屏幕宽高比,则确定所述图片的高度为屏幕高度,所述图片的宽度为屏幕高度乘以图片宽高比;

根据确定出的所述图片的宽度和高度,将所述Image对象压缩到对应的宽度和高度;

将压缩后的Image对象转换为Bitmap图片,并将Bitmap图片转换为BitmapSource对象,显示到显示控件中。

在本发明一实施例中,将Bitmap图片转换为BitmapSource对象,包括:

调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

本发明还提供一种图片处理装置,包括:

捕获模块,用于在应用程序中加载图片,在所述图片的加载过程中,捕获所述图片的异常事件;

判断模块,用于若所述捕获模块捕获到所述图片的异常事件,则判断所述图片的异常事件的类型是否为内存溢出类型;

显示模块,用于若所述判断模块判断所述图片的异常事件的类型为内存溢出类型,则按照预设规则,对所述图片的尺寸进行处理,得到处理后的图片,并显示。

在本发明一实施例中,所述捕获模块还用于:

以只读方式打开所述图片的图片文件,获取所述图片的图片文件数据流;

将所述图片的图片文件数据流读取到内存流MemoryStream中,并将所述MemoryStream中的数据创建为Bitmap图片;

将创建的Bitmap图片转换为BitmapSource对象,在转换的过程中,捕获所述图片的异常事件。

在本发明一实施例中,所述显示模块还用于:

在转换的过程中,若未捕获到所述图片的异常事件,则将BitmapSource对象,显示到显示控件中。

在本发明一实施例中,所述显示模块还用于:

将所述图片的图片文件加载为Image对象;

计算并比较所述图片的图片宽高比和所述应用程序所在屏幕的屏幕宽高比;

如果图片宽高比大于屏幕宽高比,则确定所述图片的宽度为屏幕宽度,所述图片的高度为屏幕宽度除以图片宽高比;

如果图片宽高比小于或等于屏幕宽高比,则确定所述图片的高度为屏幕高度,所述图片的宽度为屏幕高度乘以图片宽高比;

根据确定出的所述图片的宽度和高度,将所述Image对象压缩到对应的宽度和高度;

将压缩后的Image对象转换为Bitmap图片,并将Bitmap图片转换为BitmapSource对象,显示到显示控件中。

在本发明一实施例中,所述显示模块还用于:

调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

在本发明实施例中,在应用程序中加载图片,在图片的加载过程中,捕获图片的异常事件;若捕获到图片的异常事件,则判断图片的异常事件的类型是否为内存溢出类型;若是,则按照预设规则,对图片的尺寸进行处理,得到处理后的图片,并显示。由此可见,本发明实施例在图片因尺寸过大导致异常加载时,能够及时地对图片的尺寸进行处理,保证图片的正常显示。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1所示为本发明一实施例中图片处理方法的流程图;

图2所示为本发明另一实施例中图片处理方法的流程图;以及

图3所示为本发明一实施例中图片处理装置的结构示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

如图1所示为本发明一实施例中图片处理方法的流程图,该方法可以包括以下步骤S11-S13。

步骤S11,在应用程序中加载图片,在图片的加载过程中,捕获图片的异常事件。

步骤S12,若捕获到图片的异常事件,则判断图片的异常事件的类型是否为内存溢出类型,若是,则继续执行步骤S13。

在该步骤中,判断图片的异常事件的类型是否为内存溢出类型,即OutOfMemoryException异常,若是,则继续执行步骤S13。若未捕获到图片的异常事件,则将图片直接显示到显示控件中。

步骤S13,按照预设规则,对图片的尺寸进行处理,得到处理后的图片,并显示。

在本发明实施例中,在应用程序中加载图片,在图片的加载过程中,捕获图片的异常事件;若捕获到图片的异常事件,则判断图片的异常事件的类型是否为内存溢出类型;若是,则按照预设规则,对图片的尺寸进行处理,得到处理后的图片,并显示。由此可见,本发明实施例在图片因尺寸过大导致异常加载时,能够及时地对图片的尺寸进行处理,保证图片的正常显示。

上文步骤S11中在图片的加载过程中,捕获图片的异常事件,本发明实施例提供了一种可选的方案,该方案包括以下步骤A1-A3。

步骤A1,以只读方式打开图片的图片文件,获取图片的图片文件数据流。

步骤A2,将图片的图片文件数据流读取到内存流MemoryStream中,并将MemoryStream中的数据创建为Bitmap图片。

步骤A3,将创建的Bitmap图片转换为BitmapSource对象,在转换的过程中,捕获图片的异常事件。

在该步骤中,在将创建的Bitmap图片转换为BitmapSource对象时,可以调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

在本发明的可选实施例中,在转换的过程中,若未捕获到图片的异常事件,则将BitmapSource对象,显示到显示控件中。

在步骤S12判断图片的异常事件的类型为内存溢出类型时,步骤S13按照预设规则,对图片的尺寸进行处理,得到处理后的图片,并显示,本发明实施例提供了一种可选的方案,该方案包括以下步骤B1-B6。

步骤B1,将图片的图片文件加载为Image对象。

步骤B2,计算并比较图片的图片宽高比和应用程序所在屏幕的屏幕宽高比。

步骤B3,如果图片宽高比大于屏幕宽高比,则确定图片的宽度为屏幕宽度,图片的高度为屏幕宽度除以图片宽高比。

步骤B4,如果图片宽高比小于或等于屏幕宽高比,则确定图片的高度为屏幕高度,图片的宽度为屏幕高度乘以图片宽高比。

步骤B5,根据确定出的图片的宽度和高度,将Image对象压缩到对应的宽度和高度。

步骤B6,将压缩后的Image对象转换为Bitmap图片,并将Bitmap图片转换为BitmapSource对象,显示到显示控件中。

在该步骤中,将Bitmap图片转换为BitmapSource对象,可选地实施为:调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

以上介绍了图1所示实施例的各个环节的多种实现方式,下面通过一具体实施例来详细介绍本发明的图片处理方法的实现过程。如图2所示为本发明另一实施例中图片处理方法的流程图,该方法可以包括以下步骤S211-S221。

步骤S211,以只读方式打开图片的图片文件,获取图片的图片文件数据流。

步骤S212,将图片的图片文件数据流读取到内存流MemoryStream中。

步骤S213,将MemoryStream中的数据创建为Bitmap图片。

步骤S214,将创建的Bitmap图片转换为BitmapSource对象,在转换的过程中,捕获图片的异常事件。

步骤S215,捕获到图片的异常事件。

步骤S216,判断图片的异常事件的类型是否为内存溢出类型,若否,则继续执行步骤S217;若是,则继续执行步骤S218。

步骤S217,将BitmapSource对象,显示到显示控件中。

步骤S218,将图片的图片文件加载为Image对象。

步骤S219,按照预设规则,对图片的尺寸进行处理,得到处理后的图片。

步骤S220,将处理后的图片转换为Bitmap图片。

步骤S221,将Bitmap图片转换为BitmapSource对象,继续执行步骤S217。

在该步骤中,将Bitmap图片转换为BitmapSource对象,可选地实施为:调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

本发明实施例在图片因尺寸过大导致异常加载时,能够及时地对图片的尺寸进行处理,保证图片的正常显示。

需要说明的是,在实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。

对应于上述实施例中的图片处理方法,本发明还提供一种图片处理装置。如图3所示为本发明一实施例中图片处理装置的结构示意图,包括:

捕获模块31,用于在应用程序中加载图片,在所述图片的加载过程中,捕获所述图片的异常事件;

判断模块32,用于若所述捕获模块31捕获到所述图片的异常事件,则判断所述图片的异常事件的类型是否为内存溢出类型;

显示模块33,用于若所述判断模块32判断所述图片的异常事件的类型为内存溢出类型,则按照预设规则,对所述图片的尺寸进行处理,得到处理后的图片,并显示。

在本发明一实施例中,上述捕获模块31还用于:

以只读方式打开所述图片的图片文件,获取所述图片的图片文件数据流;

将所述图片的图片文件数据流读取到内存流MemoryStream中,并将所述MemoryStream中的数据创建为Bitmap图片;

将创建的Bitmap图片转换为BitmapSource对象,在转换的过程中,捕获所述图片的异常事件。

在本发明一实施例中,上述显示模块33还用于:

在转换的过程中,若未捕获到所述图片的异常事件,则将BitmapSource对象,显示到显示控件中。

在本发明一实施例中,上述显示模块33还用于:

将所述图片的图片文件加载为Image对象;

计算并比较所述图片的图片宽高比和所述应用程序所在屏幕的屏幕宽高比;

如果图片宽高比大于屏幕宽高比,则确定所述图片的宽度为屏幕宽度,所述图片的高度为屏幕宽度除以图片宽高比;

如果图片宽高比小于或等于屏幕宽高比,则确定所述图片的高度为屏幕高度,所述图片的宽度为屏幕高度乘以图片宽高比;

根据确定出的所述图片的宽度和高度,将所述Image对象压缩到对应的宽度和高度;

将压缩后的Image对象转换为Bitmap图片,并将Bitmap图片转换为BitmapSource对象,显示到显示控件中。

在本发明一实施例中,上述显示模块33还用于:

调用System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap方法,利用该方法将Bitmap图片转换为BitmapSource对象。

本发明实施例的上述装置:在应用程序中加载图片,在图片的加载过程中,捕获图片的异常事件;若捕获到图片的异常事件,则判断图片的异常事件的类型是否为内存溢出类型;若是,则按照预设规则,对图片的尺寸进行处理,得到处理后的图片,并显示。由此可见,本发明实施例在图片因尺寸过大导致异常加载时,能够及时地对图片的尺寸进行处理,保证图片的正常显示。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1