欢迎来到皮皮网网首页

【宽带预约系统源码】【网页源源码】【php绘图源码】bmp文件源码_.bmp

来源:6.7源码 时间:2024-11-26 07:41:18

1.VB .bmp数据问题!
2.BMP协议:可手动解码的数据传输/保存协议(含源代码)
3.BMP图像解码器源代码?C++编的

bmp文件源码_.bmp

VB .bmp数据问题!

       Option Explicit

       Private Declare Function SetPixelV Lib "gdi" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

       Private Sub Form_Click()

       Dim iFN As Integer

       Dim bTemp() As Byte

       Dim lFlen As Long

       Dim DataOffset As Long

       Dim Width As Long

       Dim Height As Long

       Dim PerPixel As Long

       Dim Compression As Long

       Dim sFileName As String

       Dim h As Long

       Dim w As Long

       Dim R As Integer

       Dim G As Integer

       Dim B As Integer

       Dim t As Long

       Dim qq As Long

       Dim t1 As Long

       sFileName = InputBox("Path:", "BMP文件路径", "C:\pt.bmp")

       lFlen = FileLen(sFileName)

       ReDim bTemp(lFlen)

       iFN = FreeFile

       Open sFileName For Binary As iFN

        Get #iFN, 1, bTemp() '将BMP文件以二进制方式打开,存入数组

       Close iFN

       If Not (bTemp(0) = &H And bTemp(1) = &H4D) Then MsgBox ("这不是BMP文件"): Exit Sub

       DataOffset = DCombineBytes(bTemp(), bTemp(), bTemp(), bTemp()) '偏移量

       Width = DCombineBytes(bTemp(), bTemp(), bTemp(), bTemp()) '位图的宽度

       Height = DCombineBytes(bTemp(), bTemp(), bTemp(), bTemp()) '位图的高度

       PerPixel = WCombineBytes(bTemp(), bTemp()) '每个象素的位数

       Compression = bTemp() '是否压缩

       If Compression <> 0 Then MsgBox ("此程序只能处理非压缩的BMP图像"): Exit Sub

       If PerPixel <> And PerPixel <> Then MsgBox ("此程序只能处理位或位的BMP图像"): Exit Sub

       If PerPixel = Then t1 = 3 Else t1 = 4

       For h = Height To 1 Step -1

        For w = Width To 1 Step -1

        B = bTemp(t)

        G = bTemp(t + 1)

        R = bTemp(t + 2)

        qq = SetPixelV(Form1.hdc, w, h, RGB(R, G, B))

        t = t + t1

        Next w

       Next h

       End Sub

       Private Function WCombineBytes(lsb As Byte, msb As Byte) As Long

       WCombineBytes = CLng(lsb + (msb * )) '把word十六进制数换成十进制

       End Function

       Private Function DCombineBytes(lsb As Byte, msb As Byte, hsb As Byte, ksb As Byte) As Long

       DCombineBytes = CLng(lsb + (msb * ) + (hsb * ) + (ksb * )) '把dword十六进制数换成十进制

       End Function

BMP协议:可手动解码的数据传输/保存协议(含源代码)

       通常情况下,由红、绿、宽带预约系统源码蓝三种颜色组成,即RGB显示。

       在中,红、绿、蓝通道通常都是8位深度,被称为位位图。网页源源码

       因此,一个像素的颜色信息总是包含3个字节。

       换句话说,我们可以将任何信息嵌入到像素的颜色中。

       只要能无损地保存每个像素的信息,例如:

       1. BMP格式(位图)

       bmp格式可以直接保存每个像素点的php绘图源码颜色信息,并且这些信息在存储上是连续的。这非常适合我们的需求。

       这里使用的特定bmp格式的文件头大致如下:

       将对应的值填入,然后写入像素颜色(文件数据)即可。

       但是,这里有一个小问题,bufpay源码出售BMP每行的数据量必须是4n字节,不足的部分需要向上补齐。(n为整数)

       换句话说,由于每个像素有3字节,最好让每行有4n个像素,以免出现问题。源码转转cb

       理论上,我们可以将任何文件直接放入另一个中:

       要从文件乙提取文件甲,直接从文件乙的第个字节读取并保存即可。

       然而,这里还有一个问题:

       1. 不是所有文件大小都是的整数倍。

       2. 如果m和n的差距很大,就会变成条状。

       因此,除非原文件可以在末尾添加一些无用信息后仍然正常使用,或者有其他方式得知文件的实际大小,否则我们需要另外封装一个中间层:

       ...不过,一般来说,因为我传输的是文本文件(源代码),所以在最后加上一大堆空格补齐即可,并不需要使用这个方法。

       来试试手:

       《另存为.cpp》

       查看的方式:

       当然,如果你缺少bionukg_graphics.h这个我自己写的头文件,肯定编译不出来。

       它在这里,请自取:

       保存之后取不出来?

       虽然服务器上保存的格式通常是无损的,但并不代表你可以用bmp的方式直接提取。

       你需要另存为位位图文件,然后再提取。

BMP图像解码器源代码?C++编的

       #include <jpeg.hpp>

       void Bitmap2Jpeg(AnsiString bmpFile, AnsiString jpegFile)

       {

       Graphics::TBitmap *bitmap = new Graphics::TBitmap();

       bitmap->LoadFromFile(bmpFile);

       TJPEGImage *jpeg = new TJPEGImage();

       try {

       jpeg->Assign(bitmap);

       jpeg->SaveToFile(jpegFile);

       }

       __finally {

       delete jpeg;

       }

       delete bitmap;

       }

       void Jpeg2Bitmap(AnsiString jpegFile, AnsiString bmpFile)

       {

       Graphics::TBitmap *bmp = new Graphics::TBitmap();

       TJPEGImage *jpeg = new TJPEGImage();

       jpeg->LoadFromFile(jpegFile);

       bmp->Assign(jpeg);

       bmp->SaveToFile(bmpFile);

       delete jpeg;

       delete bmp;

       }