VB 如何用GDI+修改图片的分辨率并无损压缩保存
你回答我的提问:http://zhidao.baidu.com/question/1667685382747066387.html?quesup2&oldq=1发现一个问...
你回答我的提问:http://zhidao.baidu.com/question/1667685382747066387.html?quesup2&oldq=1
发现一个问题,就是当原始图片的像素太大,比如大于六七千像素时,图片框出现无法创建AutoRedraw对象,导致无法保存图像!怎么修正呢?也就是说,采用何种方式,不利用图片框来加载图文文件,而是直接读取图片文件数据入内存的方式,可能就会避免这种现象的发生? 展开
发现一个问题,就是当原始图片的像素太大,比如大于六七千像素时,图片框出现无法创建AutoRedraw对象,导致无法保存图像!怎么修正呢?也就是说,采用何种方式,不利用图片框来加载图文文件,而是直接读取图片文件数据入内存的方式,可能就会避免这种现象的发生? 展开
1个回答
展开全部
多加个引用
Private Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As Long, Bitmap As Long) As Long
原来的代码对照下
Public Sub SaveJPG(ByVal pict As StdPicture, ByVal filename As String, Optional ByVal Quality As Byte = 80, Optional ByVal DPI As Single = 0)
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
tSI.GdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI)
If lRes = 0 Then
' lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)
lRes = GdipCreateBitmapFromFile(StrPtr("D:\test\JW--71.jpg"), lBitmap)
后面的不动,你把过程引入的变量pict 去掉 写个新的读取图片路径变量,这个你应该小Ks
我测试下,5XXX X 7XXXX 的 图 没问题, 7600 X 12500 极限图 就挂了, 这大图对.net也是极限了。不过.net不会挂
Private Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As Long, Bitmap As Long) As Long
原来的代码对照下
Public Sub SaveJPG(ByVal pict As StdPicture, ByVal filename As String, Optional ByVal Quality As Byte = 80, Optional ByVal DPI As Single = 0)
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
tSI.GdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI)
If lRes = 0 Then
' lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)
lRes = GdipCreateBitmapFromFile(StrPtr("D:\test\JW--71.jpg"), lBitmap)
后面的不动,你把过程引入的变量pict 去掉 写个新的读取图片路径变量,这个你应该小Ks
我测试下,5XXX X 7XXXX 的 图 没问题, 7600 X 12500 极限图 就挂了, 这大图对.net也是极限了。不过.net不会挂
追问
整出来了。确实在1万左右的像素时,有时会挂,特别是超出1万5时常挂!
追答
如果处理超大图 就用.net来搞吧, 不转新平台也不行了。开始是郁闷点 多交流慢慢就适应了。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |