如何将bmp转换为vb6中的jpg?如何将bmp转换为vb6中的jpg
8
A
回答
3
检查这个link
'Convert BMP to JPG with this code. (Note: Requires vic32.dll available from
'http://www.catenary.com/)
'PLACE ALL THIS IN A NEW MODULE
Declare Function bmpinfo Lib "VIC32.DLL" (ByVal Fname As String, bdat As BITMAPINFOHEADER) As Long
Declare Function allocimage Lib "VIC32.DLL" (image As imgdes, ByVal wid As Long, ByVal leng As Long, ByVal BPPixel As Long) As Long
Declare Function loadbmp Lib "VIC32.DLL" (ByVal Fname As String, desimg As imgdes) As Long
Declare Sub freeimage Lib "VIC32.DLL" (image As imgdes)
Declare Function convert1bitto8bit Lib "VIC32.DLL" (srcimg As imgdes, desimg As imgdes) As Long
Declare Sub copyimgdes Lib "VIC32.DLL" (srcimg As imgdes, desimg As imgdes)
Declare Function savejpg Lib "VIC32.DLL" (ByVal Fname As String, srcimg As imgdes, ByVal quality As Long) As Long
' Image descriptor
Type imgdes
ibuff As Long
stx As Long
sty As Long
endx As Long
endy As Long
buffwidth As Long
palette As Long
colors As Long
imgtype As Long
bmh As Long
hBitmap As Long
End Type
Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
'PLACE THIS IN YOUR FORM DECLERATIONS
Private Sub ConvertToJPEG(bmp_fname As String, jpg_fname As String, Optional quality As Long)
Dim tmpimage As imgdes ' Image descriptors
Dim tmp2image As imgdes
Dim rcode As Long
'Dim quality As Long
Dim vbitcount As Long
Dim bdat As BITMAPINFOHEADER ' Reserve space for BMP struct
'Dim bmp_fname As String
'Dim jpg_fname As String
'bmp_fname = "test.bmp"
'jpg_fname = "test.jpg"
If quality = 0 Then quality = 75
' Get info on the file we're to load
rcode = bmpinfo(bmp_fname, bdat)
If (rcode <> NO_ERROR) Then
msgbox "error: Unable to get file info"
Exit Sub
End If
vbitcount = bdat.biBitCount
If (vbitcount >= 16) Then ' 16-, 24-, or 32-bit image is loaded into 24-bit buffer
vbitcount = 24
End If
' Allocate space for an image
rcode = allocimage(tmpimage, bdat.biWidth, bdat.biHeight, vbitcount)
If (rcode <> NO_ERROR) Then
msgbox "error: Not enough memory"
Exit Sub
End If
' Load image
rcode = loadbmp(bmp_fname, tmpimage)
If (rcode <> NO_ERROR) Then
freeimage tmpimage ' Free image on error
msgbox "error: Cannot load file"
Exit Sub
End If
If (vbitcount = 1) Then ' If we loaded a 1-bit image, convert to 8-bit grayscale
' because jpeg only supports 8-bit grayscale or 24-bit color images
rcode = allocimage(tmp2image, bdat.biWidth, bdat.biHeight, 8)
If (rcode = NO_ERROR) Then
rcode = convert1bitto8bit(tmpimage, tmp2image)
freeimage tmpimage ' Replace 1-bit image with grayscale image
copyimgdes tmp2image, tmpimage
End If
End If
' Save image
rcode = savejpg(jpg_fname, tmpimage, quality)
freeimage tmpimage
Kill bmp_fname
msgbox "picture saved: " & jpg_fname
End Sub
+0
VIC32.DLL只有约250 kb。维克托图书馆的价格只有499美元,没有分配版税 – 2010-12-23 09:13:37
1
虽然有各种可用来保存其它格式的文件第三方控件,这些往往是“每座”有不可接受的许可政策及可不得了昂贵。本文介绍如何使用免费的JPEG DLL库来保存VB图片。
PS:支付$ 500,像VIC32库只保存JPG图像似乎太多...
2
与ImageMagick船舶它,这样做
shell "convert.exe image.bmp image.jpg"
2
3
那么,对于XP SP1和更高版本,您可以使用提供的工具:WIA 2.0库。
为了简单地转换BMP为JPG你可以去掉近一半在这里行:
Option Explicit
'
'Requires a reference to:
' Microsoft Windows Image Acquisition Library v2.0
'
Private Const TIFF_LZW As String = "LZW"
Private Const TIFF_RLE As String = "RLE" 'Pixel Depth must be 1.
Private Const TIFF_CCITT3 As String = "CCITT3" 'Pixel Depth must be 1.
Private Const TIFF_CCITT4 As String = "CCITT4" 'Pixel Depth must be 1.
Private Const TIFF_Uncompressed As String = "Uncompressed"
Private Sub ImgConvert(_
ByVal InFileName As String, _
ByVal OutFileName As String, _
ByVal OutFormat As String, _
Optional ByVal Quality As Integer = 100, _
Optional ByVal Compression As String = TIFF_LZW)
Dim Img As WIA.ImageFile
Dim ImgProc As WIA.ImageProcess
Set Img = New WIA.ImageFile
Img.LoadFile InFileName
Set ImgProc = New WIA.ImageProcess
With ImgProc.Filters
.Add ImgProc.FilterInfos("Convert").FilterID
.Item(1).Properties("FormatID").Value = OutFormat
If OutFormat = wiaFormatJPEG Then
.Item(1).Properties("Quality").Value = Quality
ElseIf OutFormat = wiaFormatTIFF Then
.Item(1).Properties("Compression").Value = Compression
End If
End With
Set Img = ImgProc.Apply(Img)
On Error Resume Next
Kill OutFileName
On Error GoTo 0
Img.SaveFile OutFileName
End Sub
Private Sub Main()
ImgConvert "sample.bmp", "sample.jpg", wiaFormatJPEG, 70
ImgConvert "sample.bmp", "sample.gif", wiaFormatGIF
ImgConvert "sample.bmp", "sample.png", wiaFormatPNG
ImgConvert "sample.bmp", "sample.tif", wiaFormatTIFF, , TIFF_Uncompressed
MsgBox "Complete"
End Sub
对于XP,你需要将它部署:Windows® Image Acquisition Automation Library v2.0 Tool: Image acquisition and manipulation component for VB and scripting。
对于以后的任何事情,它已经是操作系统的一部分。
2
简单!
1)这是最短方法:如果你想转换为任何格式(有/无压缩)
SavePicture(LoadPicture("c:\YourFile.BMP"),"c:\YourFile.JPG")
2),我建议FFMpeg。
Shell("ffmpeg.exe -i YourFile.bmp -q <qualityNumber*> ConverTo.Any")
* write ffmpeg /?在cmd知道使用情况
相关问题
- 1. 在BMP中将BMP转换为JPG
- 2. 在java中将bmp转换为jpg
- 3. Android NDK:将.jpg转换为.bmp文件
- 4. 将WMF转换为PNG/BMP/JPG
- 5. 如何将灰度jpg转换为24 bitcount的bmp
- 6. 如何将jpg转换为24位未压缩的BMP 4.0?
- 7. 如何使用Objective C将.jpg图像转换为.bmp格式?
- 8. 如何在GAE端将bmp转换为jpg?
- 9. 以编程方式将BMP(或JPG)转换为DDS转换器
- 10. 在Visual C++ 6.0中将.bmp转换为.jpg
- 11. 使用TJpegImage组件将bmp转换为jpg的问题
- 12. 将bmp/gif/png/etc转换为jpg的公共服务?
- 13. 如何将BMP转换为AVI C#
- 14. 如何将.Jpeg图像转换为.Bmp
- 15. PHP - 将图像从.jpg解压并转换为.bmp
- 16. 将彩色bmp转换为灰度bmp?
- 17. 如何将任何类型(BMP,JPG等)图像转换为DICOM图像
- 18. 将emf转换为bmp
- 19. 将BMP转换为avi
- 20. 将Flash中的MovieClip转换为bmp
- 21. 如何将.jpg转换为.yuv
- 22. 如何将eps转换为jpg?
- 23. 如何将SERIESSUM函数转换为VB6?
- 24. 如何将int转换为浮点VB6
- 25. 将文档转换为Jpg
- 26. 将.eps转换为.jpg
- 27. 将DCOM转换为JPG
- 28. 将.jpg转换为pdf
- 29. 将TXT转换为JPG
- 30. c#将HTML转换为JPG
不完全是一个重复,因为你问BMP到JPG,但你可能也对[转换GIF到JPG或TIF]这个问题感兴趣(http://stackoverflow.com/问题/ 1333901/visual-basic-6-image-conversion-from-gif-to-jpg-or-tif) – MarkJ 2010-12-23 12:23:00
请参阅http://www.vbaccelerator.com/home/VB/Code/vbMedia/Saving_Pictures_to_JPG/Using_Intel_JPG_Library/有问题的article.asp Mark提到。 – 2010-12-23 14:57:48