- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章利用FSO取得BMP,JPG,PNG,GIF文件信息由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
- <%
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: BMP, GIF, JPG and PNG :::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: :::
- '::: This function gets a specified number of bytes from any :::
- '::: file, starting at the offset (base 1) :::
- '::: :::
- '::: Passed: :::
- '::: flnm => Filespec of file to read :::
- '::: offset => Offset at which to start reading :::
- '::: bytes => How many bytes to read :::
- '::: :::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- function GetBytes(flnm, offset, bytes)
- Dim objFSO
- Dim objFTemp
- Dim objTextStream
- Dim lngSize
- on error resume next
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- ' First, we get the filesize
- Set objFTemp = objFSO.GetFile(flnm)
- lngSize = objFTemp.Size
- set objFTemp = nothing
- fsoForReading = 1
- Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
- if offset > 0 then
- strBuff = objTextStream.Read(offset - 1)
- end if
- if bytes = -1 then ' Get All!
- GetBytes = objTextStream.Read(lngSize) 'ReadAll
- else
- GetBytes = objTextStream.Read(bytes)
- end if
- objTextStream.Close
- set objTextStream = nothing
- set objFSO = nothing
- end function
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: :::
- '::: Functions to convert two bytes to a numeric value (long) :::
- '::: (both little-endian and big-endian) :::
- '::: :::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- function lngConvert(strTemp)
- lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
- end function
- function lngConvert2(strTemp)
- lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
- end function
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: :::
- '::: This function does most of the real work. It will attempt :::
- '::: to read any file, regardless of the extension, and will :::
- '::: identify if it is a graphical image. :::
- '::: :::
- '::: Passed: :::
- '::: flnm => Filespec of file to read :::
- '::: width => width of image :::
- '::: height => height of image :::
- '::: depth => color depth (in number of colors) :::
- '::: strImageType=> type of image (e.g. GIF, BMP, etc.) :::
- '::: :::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- function gfxSpex(flnm, width, height, depth, strImageType)
- dim strPNG
- dim strGIF
- dim strBMP
- dim strType
- strType = ""
- strImageType = "(unknown)"
- gfxSpex = False
- strPNG = chr(137) & chr(80) & chr(78)
- strGIF = "GIF"
- strBMP = chr(66) & chr(77)
- strType = GetBytes(flnm, 0, 3)
- if strType = strGIF then ' is GIF
- strImageType = "GIF"
- Width = lngConvert(GetBytes(flnm, 7, 2))
- Height = lngConvert(GetBytes(flnm, 9, 2))
- Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
- gfxSpex = True
- elseif left(strType, 2) = strBMP then ' is BMP
- strImageType = "BMP"
- Width = lngConvert(GetBytes(flnm, 19, 2))
- Height = lngConvert(GetBytes(flnm, 23, 2))
- Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
- gfxSpex = True
- elseif strType = strPNG then ' Is PNG
- strImageType = "PNG"
- Width = lngConvert2(GetBytes(flnm, 19, 2))
- Height = lngConvert2(GetBytes(flnm, 23, 2))
- Depth = getBytes(flnm, 25, 2)
- select case asc(right(Depth,1))
- case 0
- Depth = 2 ^ (asc(left(Depth, 1)))
- gfxSpex = True
- case 2
- Depth = 2 ^ (asc(left(Depth, 1)) * 3)
- gfxSpex = True
- case 3
- Depth = 2 ^ (asc(left(Depth, 1))) '8
- gfxSpex = True
- case 4
- Depth = 2 ^ (asc(left(Depth, 1)) * 2)
- gfxSpex = True
- case 6
- Depth = 2 ^ (asc(left(Depth, 1)) * 4)
- gfxSpex = True
- case else
- Depth = -1
- end select
- else
- strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file
- lngSize = len(strBuff)
- flgFound = 0
- strTarget = chr(255) & chr(216) & chr(255)
- flgFound = instr(strBuff, strTarget)
- if flgFound = 0 then
- exit function
- end if
- strImageType = "JPG"
- lngPos = flgFound + 2
- ExitLoop = false
- do while ExitLoop = False and lngPos < lngSize
- do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
- lngPos = lngPos + 1
- loop
- if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
- lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
- lngPos = lngPos + lngMarkerSize + 1
- else
- ExitLoop = True
- end if
- loop
- '
- if ExitLoop = False then
- Width = -1
- Height = -1
- Depth = -1
- else
- Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
- Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
- Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
- gfxSpex = True
- end if
- end if
- end function
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: Test Harness :::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ' To test, we'll just try to show all files with a .GIF extension in the root of C:
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objF = objFSO.GetFolder("c:\")
- Set objFC = objF.Files
- response.write "<table border=""0"" cellpadding=""5"">"
- For Each f1 in objFC
- if instr(ucase(f1.Name), ".GIF") then
- response.write "<tr><td>" & f1.name & "</td><td>" & f1.DateCreated & "</td><td>" & f1.Size & "</td><td>"
- if gfxSpex(f1.Path, w, h, c, strType) = true then
- response.write w & " x " & h & " " & c & " colors"
- else
- response.write " "
- end if
- response.write "</td></tr>"
- end if
- Next
- response.write "</table>"
- set objFC = nothing
- set objF = nothing
- set objFSO = nothing
- %>
最后此篇关于利用FSO取得BMP,JPG,PNG,GIF文件信息的文章就讲到这里了,如果你想了解更多关于利用FSO取得BMP,JPG,PNG,GIF文件信息的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有谁知道是否可以将多个 gif 或动画 gif 加入到一个动画 gif 中(即,将这些帧连接到一个主动画 gif 中)? 我想要一些服务器端功能来执行此操作。 文件的尺寸、模式等将相同,只是内容不同。
提前道歉,但这不是一个真正的photoshop问题。相反,我试图想出一些令人信服的东西,但尽可能地利用 gif 格式的压缩和特性来为动画生成尽可能小的文件。 一些限制: 它需要至少 20 或 30 帧
如何创建播放一次并在最后一帧卡住的 GIF 图像。 我已经将循环属性设置为 1,所以第一个问题解决了。 但是动画结束后,gif并不是在最后一帧卡住,而是回到第一帧。 最佳答案 您需要将 gif 的循环
我有两个不同大小的 GIF。我希望能够将一个动画 GIF 放在特定位置的静态背景 GIF 上,同时将文本添加到结果中。我是 ImageMagick 世界的新手,请帮忙。 我试图实现以下结果,其中狗贴纸
你好 stackoverflow 世界。(这是我第一次在这里真正发布问题。令人兴奋) 不久前,我从我公司的一个团队那里继承了一个已有 2 年历史的 MVC 网站。我现在知道这个解决方案的大部分来龙去脉
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 1 年前。
我想将我的处理草图之一导出为 gif 形式,并使用 extrapixel 的 Gif 动画库 ( http://extrapixel.github.io/gif-animation/ ) 来执行此操作
我正在寻找一个可以处理动画 gif 图像并在其上写入文本的函数。 工作解决方案可能由 Gif4j lib 提供,但我正在寻找开源解决方案或建议如何自行实现它。 如何在 Java 中将文本放在 gif
这个问题在这里已经有了答案: Change File Extension Using C# (6 个答案) 关闭 8 年前。 此代码将重命名所有文件名: static private void Re
我会保持简短; 有什么方法可以区分静态 GIF 图像和动画图像吗?我正在使用 C#。 谢谢 最佳答案 Here's an article about how to determine the numb
我试图在视频上重叠动画 gif,但没有成功。 我的目标是下一个: gif 动画必须循环播放,直到视频结束。 gif 被缩放以覆盖整个视频。 gif 保留透明度。 我在这方面取得的最大成就是 gif 使
在您的网站上放置网站图标时,您显然可以使用动画 gif,只需将 gif 文件的扩展名更改为 .ico . http://www.k-director.com/blog/how-to-add-an-an
所以我试图为一个充满 gif 的文件夹添加水印,但我收到一条错误消息,说我当时只能使用一个 GIF 流,有没有办法绕过这个问题? @echo off setlocal for %%G in ("%~d
我有大约 200 张 jpg 图像。我需要堆叠它们,以便我可以将它们转换为简单的动画 gif 图像。是否有任何免费工具可以完成这项工作?我的操作系统是windows。 我不太关心输出的质量。 最佳答案
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我想使用库显示 GIF WPF Animated GIF 。但是,当设置属性 PictureSource 时,进程内存会从 208MB 增加到 1GB。为什么? XAML
几天后我有话要说。我必须引用细胞原子。我想在显示元胞自动机进化的幻灯片中显示一个小 gif,所以我的问题是:如何将使用 golly game of life 创建的模式和进化转换为动画 gif? 最佳
看这段代码: $('#loader').show(); $.post( '/action.php', function( data ) { // do anything with data $('#
作为项目的一部分,我们需要以编程方式将多个动画 GIF 以网格的形式组合成一个主动画 GIF(一个 gif 文件)。 我们不关心它是在客户端(即带有 ios/android 的智能手机)还是在服务器端
我正在制作一个小游戏。这不是 Action 游戏,而是解谜游戏,因此性能并不是那么重要。现在,我有了主游戏区,一张背景图片。在某些情况下,我想在部分背景图像上绘制其他图像。我的问题是背景图片和叠加的图
我是一名优秀的程序员,十分优秀!