哈哈,再来一个BMP 转 JPG 的模块,该有的都了。

原创 2007年10月15日 15:04:00

应朋友需要,把远程屏幕监控需要的核心代码发布 出来,这是最后一个,发送算法自己写咯

Option Explicit
Private Type GUID
    Data1  As Long
    Data2  As Integer
    Data3  As Integer
    Data4(0 To 7)    As Byte
End Type
Private Type GdiplusStartupInput
    GdiplusVersion  As Long
    DebugEventCallback  As Long
    SuppressBackgroundThread  As Long
    SuppressExternalCodecs  As Long
End Type
Private Type EncoderParameter
    GUID  As GUID
    NumberOfvalues  As Long
type  As Long
    value  As Long
End Type
Private Type EncoderParameters
    Count  As Long
    Parameter  As EncoderParameter
End Type
Private Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Private Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Private Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Private Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal FileName As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long

'  ----====  SaveJPG  ====----

Public Sub SaveJPG(ByVal pict As StdPicture, ByVal FileName As String, Optional ByVal quality As Byte = 80)
    Dim tSI   As GdiplusStartupInput
    Dim lRes   As Long
    Dim lGDIP   As Long
    Dim lBitmap   As Long
    '  Initialize  GDI+
    tSI.GdiplusVersion = 1
    lRes = GdiplusStartup(lGDIP, tSI)
    If lRes = 0 Then
        '  Create  the  GDI+  bitmap
        '  from  the  image  handle
        lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)
        If lRes = 0 Then
            Dim tJpgEncoder   As GUID
            Dim tParams   As EncoderParameters
            '  Initialize  the  encoder  GUID
            CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
            '  Initialize  the  encoder  parameters
            tParams.Count = 1
            With tParams.Parameter   '  Quality
                '  Set  the  Quality  GUID
                CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB3505E7EB}"), .GUID
                .NumberOfvalues = 1
                .type = 1
                .value = VarPtr(quality)
            End With
            '  Save  the  image
            lRes = GdipSaveImageToFile(lBitmap, StrPtr(FileName), tJpgEncoder, tParams)
            '  Destroy  the  bitmap
            GdipDisposeImage lBitmap
        End If
        '  Shutdown  GDI+
        GdiplusShutdown lGDIP
    End If
    If lRes Then
      'Err.Raise 5, , "Cannot  save  the  image.  GDI+  Error:" & lRes
      GdiplusShutdown lGDIP
      lRes = GdiplusStartup(lGDIP, tSI)

  End If
End Sub

jpg转bmp(使用libjpeg)

jpg转bmp(使用libjpeg)   还是关于图像格式上的东西。使用了libjpeg库将jpeg图像转换到bmp格式。解压原理还是相对复杂的,将来有机会说不定会详细介绍。这里只是库的使用...
  • tanqiuwei
  • tanqiuwei
  • 2014年08月14日 15:57
  • 2760

jpg转bmp(使用libjpeg)

jpg转bmp(使用libjpeg)   还是关于图像格式上的东西。使用了libjpeg库将jpeg图像转换到bmp格式。解压原理还是相对复杂的,将来有机会说不定会详细介绍。这里只是库的使用...
  • kangear
  • kangear
  • 2013年02月08日 15:22
  • 4904

bmp转jpg(使用libjpeg)

bmp转jpg(使用libjpeg)   jpg压缩原理可以参考这篇文章http://hi.baidu.com/tiandsp/item/f5a2dcde6ef1405bd73aae41,我...
  • kangear
  • kangear
  • 2013年02月08日 15:50
  • 3195

C++ BMP转JPG方法三

因为最近涉及将大的jpg缩小后再在网络上传输,所以需要将大的jpg转小的JPG。首先用Opencv将jpg读取到内存,缩小后,保存为bmp,再将bmp转JPG。如果直接是bmp文件也可以的。7万张图片...
  • sz76211822
  • sz76211822
  • 2017年04月19日 16:16
  • 1562

bmp图片和jpg图片之间的相互转换(OpenCV)

无所事事,就写了很简单且无聊的程序,就是bmp图片和jpg图片的相互转换,下面是程序: jpg图片转换为bmp图片: 下载地址:http://sites.google.com/site/pengs...
  • a771948524
  • a771948524
  • 2013年08月19日 14:35
  • 2276

C++ BMP转JPG方法一

读取文件数据后创建IStream对象,再调用IStream类方法read将JPG数据以二进制流读取出来。 1.添加GDI头文件 #include #pragma comment(lib, "Gdip...
  • sz76211822
  • sz76211822
  • 2017年04月13日 15:58
  • 1401

MFC jpg与bmp格式图片互转

jpg与bmp图片格式互相转换的库里面有这么几个文件: 把下面的这几个文件放到你的工程目录下面,并添加! 工程 -- 设置 -- 连接: 在对象/库模块里面添加:jpeglib2.lib winm...
  • ieczw
  • ieczw
  • 2014年02月27日 21:34
  • 1833

jpeg转bmp实现c代码

#include #include #include #pragma pack(1) #define M_SOF0 0xc0 #define M_DHT 0xc4 #define M_E...
  • oHanTanYanYing
  • oHanTanYanYing
  • 2015年03月30日 18:48
  • 2097

Android实现BMP和PNG转换为JPEG格式

项目需求,需要把BMP24位的图片转换成jpeg的格式,在网上查询了一些不同格式图片的基本知识,加以总结,实现了一个简单的Demo程序,先贴代码,然后再进行理解 picSwitcher.java文件...
  • email_jade
  • email_jade
  • 2017年01月17日 20:20
  • 2367

使用libjpeg库将bmp图片压缩成jpg

在进行图片压缩编程之前必须先移植第三方库libjpeg
  • cjj717938588
  • cjj717938588
  • 2014年07月03日 18:03
  • 2986
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:哈哈,再来一个BMP 转 JPG 的模块,该有的都了。
举报原因:
原因补充:

(最多只允许输入30个字)