资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

vb.net的图像处理 vbnet drawimage

如何正确掌握VB.NET操作缩放图像

在VB.NET操作缩放图像中的显示和保存缩放图像,用到Image和Graphics类,在VSDotNet2K3下面Reference里自动添加了引用System.Drawing,直接用就行。

创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序制作,十多年建站对混凝土搅拌罐等多个方面,拥有多年的网站维护经验。

实现VB.NET操作缩放图像代码如下:DimimgAsImageImage=Image.FromFile

(D:\Image\tstImage.jpg)

''tstImage是原先的图片DimgrfxAsGraphics=Me

.CreateGraphics

grfx.DrawImage(img,0,0,img.Width*

3,img.Height*3)''在Form里显示

DimimgnewAsNewSystem.Drawing.Bitmap

(img,img.Height*3,img.Width*3)

''新建一个放大的图片

imgnew.Save(D:\Image\tstNewImage.jpg,

System.Drawing.Imaging.ImageFormat.Jpeg)

''保存放大后图片

你可以建一个Form,然后在Form里拖进一个Button,把上面的代码放在Button_Click事件里面源码天空

,执行就行了。

对上面VB.NET操作缩放图像代码的解释:

1.要获取Graphics对象只能从某一事件的参数中获取或者使用窗体和控件对象的CreateGraphics方法来获取-----上面代码使用Me.CreateGraphics来引用这个对象。

2.加载一个图片用Image类的FromFile或者FromStream方法

3.用DrawImage来显示一个图片,该方法有30多个重载方法,可以查MSDN了解细节。

4.保存时的一个问题:我们必须先建一个对象,用于存缩放图像。

求助VB.NET 图像加载处理后资源释放的难题

C#

using (img1 = new bitmap(xxx,xxx))

{

}

这样的也无效么?

vbnet打开文件夹下打开jpg和png

XPS文件格式经常在文件处理应用程序中使用。您可以在基于.NET Framework的应用程序中使用C#或VB.NET以编程方式将XPS或OXPS转换为JPG或PNG图像。

让我们逐步介绍以下方案,以了解有关XPS转换的更多信息:

使用C#或VB.NET将XPS,OXPS转换为JPG图像

使用C#或VB.NET将XPS,OXPS转换为PNG图像

目前,.NET版Aspose.page升级到v20.10版,感兴趣的朋友可点击下载

使用C#或VB.NET将XPS,OXPS转换为JPG图像

JPG文件之所以出名是因为它们在所有系统环境中均受支持。您可以使用C#或VB.NET以编程方式将XPS或OXPS文件转换为JPG图像。对于XPS或OXPS到JPG图像的转换,应遵循以下步骤:

加载输入XPS或OXPS文件

初始化JpegSaveOptions对象

指定要渲染的SmoothingMode,Resolution和PageNumbers

保存输出的JPG图像

以下代码显示了如何使用C#语言将XPS或OXPS转换为JPG图像:

// Input file

string inputFileName = dataDir + "input.xps";

//Output file

string outputFileName = dataDir + "XPStoImage_out.jpeg";

// Initialize XPS input stream

using (Stream xpsStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read))

{

// Load XPS document form the stream

XpsDocument document = new XpsDocument(xpsStream, new XpsLoadOptions());

// or load XPS document directly from file. No xpsStream is needed then.

// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

// Initialize options object with necessary parameters.

JpegSaveOptions options = new JpegSaveOptions()

{

SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality,

Resolution = 300

};

// Create rendering device for JPG format

ImageDevice device = new ImageDevice();

document.Save(device, options);

// Iterate through document partitions (fixed documents, in XPS terms)

for (int i = 0; i device.Result.Length; i++) // Iterate through partition pages for (int j = 0; j device.Result[i].Length; j++) { // Initialize image output stream using (Stream imageStream = System.IO.File.Open(Path.GetDirectoryName(outputFileName) + Path.GetFileNameWithoutExtension(outputFileName) + "_" + (i + 1) + "_" + (j + 1) + Path.GetExtension(outputFileName), System.IO.FileMode.Create, System.IO.FileAccess.Write)) // Write image imageStream.Write(device.Result[i][j], 0, device.Result[i][j].Length); } }

使用C#或VB.NET将XPS,OXPS转换为PNG图像

可能需要使用C#或VB.NET和Aspose.Page for .NET API将XPS或OXPS文件转换为PNG。您需要按照以下步骤将XPS转换为PNG:

加载输入XPS或OXPS文件

初始化PngSaveOptions对象

设置图像分辨率或页面编号为渲染

保存输出的PNG图像

在vb.net环境下图像处理,用什么建立3D

首先,还是谈谈图像像素时数据获取方面吧,.net中的图像相关类基本上都是基于GDI+的,因此,图像数据的获取其实也是调用GDI+的一些函数。这个函数就是LockBits,在vb.net中彩色图像数据的快速获取 一文中,我们是调用了Marshal.Copy把LockBits锁定的内存数据拷贝到数据中,然后对数组中的值进行处理。这样做主要的原因是VB.NET不好直接访问内存(Marshal.ReadByte之类的函数不适合用于大型的循环中)。那么,这就造成了2个不好的事情,第一:在同一时间需要2倍于图像数据量的内存,第二:内存数据拷贝到数据,以及处理后再把数组的数据拷贝会内存中都是会减低速度的。作为一种改进,我们应该充分利用LockBits的功能。LockBits中的LockMode中有一种模式为ImageLockMode.UserInputBuffer,该模式下需要用户先申请内存,然后在把图像数据按照相关格式填充如这个内存中。这样,就可以先定义个数组,然后把图像数据填充到这个数组中,就避免了来回拷贝的耗时了,简单示例代码如下:

Dim BmpData As New BitmapData

Stride = ((Bmp.Width * 3 + 3) And HFFFFFFFC)

Dim PixleValue(Stride * Bmp.Height) As Byte

Dim Hanlde As GCHandle = GCHandle.Alloc(PixleValue, GCHandleType.Pinned)

BmpData.Scan0 = Hanlde.AddrOfPinnedObject()


分享标题:vb.net的图像处理 vbnet drawimage
转载注明:http://cdkjz.cn/article/dopggci.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220