欢迎光临
我们一直在努力

如何获得jpg文件的实际尺寸呢?

建站超值云服务器,限时71元/月

网上找的一段代码,把它编译成组件就可以用了,还支持png<br>

<br>

<br>

i have released this source code into the public domain.&nbsp;&nbsp;you may use it<br>

with no strings attached.<br>

just call getimagesize with a string containing the filename, and<br>

it will return a user defined type imagesize&nbsp;&nbsp;(see below)<br>

return values of 0 indicate an error of some sort.&nbsp;&nbsp;the error handling<br>

in this module is limited.&nbsp;&nbsp;there is *no* error handling on the test<br>

form.&nbsp;&nbsp;this routine is limited to x or y sizes of 32767 pixels, but that<br>

should not be a problem.<br>

<br>

check back at http://www.qtm.net/~davidc<br>

i may add support for more file types.<br>

<br>

supported in this version:<br>

jpeg<br>

gif<br>

png<br>

<br>

this routine does not require any royalty fees for unisys as it<br>

does nothing with the compressed part of gif files.&nbsp;&nbsp;it simply reads<br>

4 bytes to determine image size.<br>

<br>

option explicit<br>

public wimg as long<br>

public himg as long<br>

public type imagesize<br>

&nbsp;&nbsp;&nbsp;&nbsp;width as long<br>

&nbsp;&nbsp;&nbsp;&nbsp;height as long<br>

end type<br>

<br>

public sub getimagesize(sfilename as string)<br>

&nbsp;&nbsp;&nbsp;&nbsp;on error resume next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;youll want to change this<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim ifn as integer<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim btemp(3) as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim lflen as long<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim lpos as long<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bhmsb as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bhlsb as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bwmsb as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bwlsb as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bbuf(7) as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim bdone as byte<br>

&nbsp;&nbsp;&nbsp;&nbsp;dim icount as integer<br>

<br>

&nbsp;&nbsp;&nbsp;&nbsp;lflen = filelen(sfilename)<br>

&nbsp;&nbsp;&nbsp;&nbsp;ifn = freefile<br>

&nbsp;&nbsp;&nbsp;&nbsp;open sfilename for binary as ifn<br>

&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 1, btemp()<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;png file<br>

&nbsp;&nbsp;&nbsp;&nbsp;if btemp(0) = &h89 and btemp(1) = &h50 and btemp(2) = &h4e _<br>

&nbsp;&nbsp;&nbsp;&nbsp;and btemp(3) = &h47 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 19, bwmsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 20, bwlsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 23, bhmsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 24, bhlsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.width = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.height = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wimg = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;himg = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;gif file<br>

&nbsp;&nbsp;&nbsp;&nbsp;if btemp(0) = &h47 and btemp(1) = &h49 and btemp(2) = &h46 _<br>

&nbsp;&nbsp;&nbsp;&nbsp;and btemp(3) = &h38 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 7, bwlsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 8, bwmsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 9, bhlsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, 10, bhmsb<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.width = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.height = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wimg = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;himg = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;jpeg file<br>

&nbsp;&nbsp;&nbsp;&nbsp;if btemp(0) = &hff and btemp(1) = &hd8 and btemp(2) = &hff then<br>

&nbsp;&nbsp;&nbsp;&nbsp;debug.print &quot;jpeg&quot;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpos = 3<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, lpos, bbuf(1)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, lpos + 1, bbuf(2)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpos = lpos + 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop until (bbuf(1) = &hff and bbuf(2) &lt;&gt; &hff) or lpos &gt; lflen<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for icount = 0 to 7<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get #ifn, lpos + icount, bbuf(icount)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next icount<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if bbuf(0) &gt;= &hc0 and bbuf(0) &lt;= &hc3 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bhmsb = bbuf(4)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bhlsb = bbuf(5)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bwmsb = bbuf(6)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bwlsb = bbuf(7)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bdone = 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpos = lpos + (combinebytes(bbuf(2), bbuf(1))) + 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop while lpos &lt; lflen and bdone = 0<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.width = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getimagesize.height = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wimg = combinebytes(bwlsb, bwmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;himg = combinebytes(bhlsb, bhmsb)<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;close ifn<br>

&nbsp;&nbsp;&nbsp;&nbsp;<br>

end sub<br>

private function combinebytes(lsb as byte, msb as byte) as long<br>

&nbsp;&nbsp;&nbsp;&nbsp;combinebytes = clng(lsb + (msb * 256))<br>

end function

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何获得jpg文件的实际尺寸呢?
分享到: 更多 (0)