Hiển thị kết quả từ 21 đến 30 / 39
Chủ đề: [TUTOUR] Cấu trúc file BMP
-
27-04-2004 04:55 #21
Đây là code lấy thông tin về width + height của JPEG, BMP, GIF, PNG nhưng viết bằng VB chuyển qua pascal hay gì gì chắc cũng chẳng khó đâu.
Public Type ImgDimType
height As Long
width As Long
End Type
Public Function getImgDim(ByVal fileName As String, _
Ext As String) As ImgDimType
'Inputs:
'
'fileName is a string containing the path name of the image file.
'
'ImgDim is passed as an empty type var and contains the height
'and width that's passed back.
'
'Ext is passed as an empty string and contains the image type
'as a 3 letter description that's passed back.
'
'
'Returns:
'
'True if the function was successful.
'declare vars
Dim handle As Integer, isValidImage As Boolean
Dim byteArr(255) As Byte, i As Integer
'init vars
isValidImage = False
ImgDim.height = 0
ImgDim.width = 0
'open file and get 256 byte chunk
handle = FreeFile
On Error GoTo endFunction
Open fileName For Binary Access Read As #handle
Get handle, , byteArr
Close #handle
'check for jpg header (SOI): &HFF and &HD8
' contained in first 2 bytes
If byteArr(0) = &HFF And byteArr(1) = &HD8 Then
isValidImage = True
Else
GoTo checkGIF
End If
'check for SOF marker: &HFF and &HC0 TO &HCF
For i = 0 To 255
If byteArr(i) = &HFF And byteArr(i + 1) >= &HC0 _
And byteArr(i + 1) <= &HCF Then
ImgDim.height = byteArr(i + 5) * 256 + byteArr(i + 6)
ImgDim.width = byteArr(i + 7) * 256 + byteArr(i + 8)
Exit For
End If
Next i
'get image type and exit
Ext = "jpg"
GoTo endFunction
checkGIF:
'check for GIF header
If byteArr(0) = &H47 And byteArr(1) = &H49 And byteArr(2) = &H46 _
And byteArr(3) = &H38 Then
ImgDim.width = byteArr(7) * 256 + byteArr(6)
ImgDim.height = byteArr(9) * 256 + byteArr(8)
isValidImage = True
Else
GoTo checkBMP
End If
'get image type and exit
Ext = "gif"
GoTo endFunction
checkBMP:
'check for BMP header
If byteArr(0) = 66 And byteArr(1) = 77 Then
isValidImage = True
Else
GoTo checkPNG
End If
'get record type info
If byteArr(14) = 40 Then
'get width and height of BMP
ImgDim.width = byteArr(21) * 256 ^ 3 + byteArr(20) * 256 ^ 2 _
+ byteArr(19) * 256 + byteArr(18)
ImgDim.height = byteArr(25) * 256 ^ 3 + byteArr(24) * 256 ^ 2 _
+ byteArr(23) * 256 + byteArr(22)
'another kind of BMP
ElseIf byteArr(17) = 12 Then
'get width and height of BMP
ImgDim.width = byteArr(19) * 256 + byteArr(18)
ImgDim.height = byteArr(21) * 256 + byteArr(20)
End If
'get image type and exit
Ext = "bmp"
GoTo endFunction
checkPNG:
'check for PNG header
If byteArr(0) = &H89 And byteArr(1) = &H50 And byteArr(2) = &H4E _
And byteArr(3) = &H47 Then
ImgDim.width = byteArr(18) * 256 + byteArr(19)
ImgDim.height = byteArr(22) * 256 + byteArr(23)
isValidImage = True
Else
GoTo endFunction
End If
Ext = "png"
endFunction:
'return function's success status
getImgDim = isValidImage
End Function
-
16-08-2004 06:38 #22
Registered User
- Tham gia
- 15-08-2004
- Bài viết
- 9
- Like
- 0
- Thanked 0 Times in 0 Posts
Như vậy có đại ca nào chuyển dùm mình được không .Nói thật nha mình chỉ biết pấcl thôi chứ các ngôn ngữ khách không có học
-
18-08-2004 07:16 #23
Lấy thông tin thì chỉ cần biết header thôi, chuyện này không quan trọng lắm, quan trọng là làm sao để nó được in ra monitor kìa.
Còn bạn diepthanhtoan84, có lẽ bạn nên tự tìm hiểu thêm về các ngôn ngữ, mua sách về xem rồi viết thử riết cũng được, nhất là đã có kiến thức về pascal, vì hầu hết các ngôn ngữ đều tựa tựa nhau, trừ assembly thôi.Mình cũng tự học chứ có ai dạy dỗ gì đâu, trong trường tới giờ tin toàn là chơi game, ông thầy chẳng dạy gì cả, chán gần chết.
-
19-08-2004 00:10 #24
Registered User
- Tham gia
- 15-08-2004
- Bài viết
- 9
- Like
- 0
- Thanked 0 Times in 0 Posts
Mình thử xem sao nhé! nhưng mà sách pascal loại nào bây giờ,bạn có thể giới thiệu cho mình một số sách được không. Sách nào hấp dẩn ấy. mình cám ơn trước nhé!!!
-
19-08-2004 07:50 #25
Cách tốt nhất để học là xem các ví dụ đấy bạn ạ. Bạn có thể lên một số trang web có mã nguồn để học
www.programmersheaven.com chẳng hạn,
Còn sách dạy ư, trời ạ,có thể nói chẳng cuốn nào hấp dẫn cả, đọc vào mất công tốn thời gian, vì cuốn nào cũng na ná với nhau, chỉ có được một số ít thông tin trong đó là hữu dụng. Còn nữa, hiện nay sách về pascal hơi bị hiếm vì ít ai chịu dùng nó, cũng may là trường học có dạy nếu không chắc pascal tuyệt chủng lâu rồi quá.
-
29-08-2004 12:28 #26
viết bằng hợp ngữ được không các bạn
-
30-08-2004 12:20 #27
quá tốt! bạn viết bằng hợp ngữ thì mấy cái địa chỉ bạn càng dễ dàng xử lý!
-
03-03-2005 18:02 #28
Vào Đây Để tham khảo thêm:
http://www.dickmann.org/pascal/files.htm
-
06-03-2005 21:08 #29
Này đại ca cuối cùng thì hỗ trợ window đưa ra ảnh BMP hay là bác lập trình đưa ra monitor screen vậy ???
-
07-03-2005 15:28 #30
Ùh đúng rùi, tui lộn


Quote
Bookmarks