标题:怎样获取图像(jpg)的尺寸,不是像素,而是文件大小.比如80cm-60cm
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
如果你的图片是批量制作的,它们的DPI通常是一致的,可以直接在资源管理器中查到:

授人以渔,不授人以鱼。
2013-02-02 21:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
图像在设备上输出的真实尺寸,受DPI制约。XP屏幕上显示的内容,通常是72DPI,但在高档的液晶显示器和Win7/8上,默认是96DPI,甚至可以设到更高,这样同样的图像输出到设备上,尺寸是不一样的。现代.NET的程序,很多都使用DPI自动调整尺寸了,确保在不同设备上输出的内容维持相同的效果,这在旧的程序中是做不到的,所以才要自己计算尺寸。

授人以渔,不授人以鱼。
2013-02-02 21:50
qingwen66666
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-2-2
得分:0 
这个程序是接到不同客户的文件,
然后根据客户传来的图像文件  得到尺寸(不是像素!是长度跟宽度...)用来计算平方米,然后计算价格的..
我现在可以得到图像的像素,现在就是无法得到图像的dpi....
正如您所主,如果得到了dpi,那么我就能算出图像的长宽了....
脆求!感谢!
2013-02-02 21:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
如果是一致,只要在程序中直接使用这个常数就可以了,或者在图像文件夹中放置一个参数文件,把分辨率读入到程序中使用。但如果需要面对形形色色来源各异的图像文件,就需要用GDI+ API获取每幅图像的真实数据。GDI+是Windows自带的内部库,一般可用API接口处理,但VFP9提供了一个GDI+的类库给程序员使用,只是这个类库很庞大,有300多K,如果仅仅为了这么一个目的而带上它,似乎有点不划算。

授人以渔,不授人以鱼。
2013-02-02 22:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
网上搜索下

坚守VFP最后的阵地
2013-02-02 22:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
程序代码:
    SET PATH TO HOME() + "\FFC"
    lcName = "Z:\test\VFP\China 06.JPG"
    lcMessage = ""
    loImage = NEWOBJECT("gpImage", "_GDIPlus.vcx")
    WITH loImage
        .CreateFromFile(lcName)
        lcMessage = "水平分辨率: " + TRANSFORM(.HorizontalResolution) + CHR(13)+CHR(10) + ;
                    "垂直分辨率: " + TRANSFORM(.VerticalResolution) + CHR(13)+CHR(10) + ;
                    "水平像素: " + TRANSFORM(.ImageWidth) + CHR(13)+CHR(10) + ;
                    "垂直像素: " + TRANSFORM(.ImageHeight) + CHR(13)+CHR(10)
    ENDWITH
    MESSAGEBOX(lcMessage)
    RELEASE loImage



授人以渔,不授人以鱼。
2013-02-02 22:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 

授人以渔,不授人以鱼。
2013-02-02 22:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
使用GDI+类库,必须把_GDIPlus.vcx和_GDIPlus.vct打包进项目中,编译成独立.exe文件向外发行时,记得同时发布GDIPlus.DLL。

授人以渔,不授人以鱼。
2013-02-02 22:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用TonyDeng在2013-2-2 22:29:35的发言:

 
    SET PATH TO HOME() + "\FFC"
    lcName = "Z:\test\VFP\China 06.JPG"
    lcMessage = ""
    loImage = NEWOBJECT("gpImage", "_GDIPlus.vcx")
    WITH loImage
        .CreateFromFile(lcName)
        lcMessage = "水平分辨率: " + TRANSFORM(.HorizontalResolution) + CHR(13)+CHR(10) + ;
                    "垂直分辨率: " + TRANSFORM(.VerticalResolution) + CHR(13)+CHR(10) + ;
                    "水平像素: " + TRANSFORM(.ImageWidth) + CHR(13)+CHR(10) + ;
                    "垂直像素: " + TRANSFORM(.ImageHeight) + CHR(13)+CHR(10)
    ENDWITH
    MESSAGEBOX(lcMessage)
    RELEASE loImage
用的是那个类

坚守VFP最后的阵地
2013-02-02 22:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
_GDIPlus.vcx

授人以渔,不授人以鱼。
2013-02-02 22:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398109-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.954823 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved