精华内容
下载资源
问答
  • 本文是利用Python脚本读取图片信息,有几个说明如下:1...GPS 信息的图片,实现则非常复杂,需要仔细计算每个描述符的偏移量脚本运行后,读取结果如下这里和 Windows 属性查看器读到的内容完全一致源码如下# -*- co...

    本文是利用Python脚本读取图片信息,有几个说明如下:

    1、没有实现错误处理

    2、没有读取所有信息,大概只有 GPS 信息、图片分辨率、图片像素、设备商、拍摄设备等

    3、简单修改后应该能实现暴力修改图片的 GPS 信息

    4、但对于本身没有 GPS 信息的图片,实现则非常复杂,需要仔细计算每个描述符的偏移量

    脚本运行后,读取结果如下

    这里和 Windows 属性查看器读到的内容完全一致

    源码如下# -*- coding:utf-8 -*-

    import binascii

    class ParseMethod(object):

    @staticmethod

    def parse_default(f, count, offset):

    pass

    @staticmethod

    def parse_latitude(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    latitude = [0,0,0]

    for i in xrange(count):

    byte = f.read(4)

    numerator = byte.encode('hex')

    byte = f.read(4)

    denominator = byte.encode('hex')

    latitude[i] = float(int(numerator, 16)) / int(denominator, 16)

    print 'Latitude:\t%.2f %.2f\' %.2f\"' % (latitude[0], latitude[1], latitude[2])

    f.seek(old_pos)

    @staticmethod

    def parse_longtitude(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    longtitude = [0,0,0]

    for i in xrange(count):

    byte = f.read(4)

    numerator = byte.encode('hex')

    byte = f.read(4)

    denominator = byte.encode('hex')

    longtitude[i] = float(int(numerator, 16)) / int(denominator, 16)

    print 'Longtitude:\t%.2f %.2f\' %.2f\"' % (longtitude[0], longtitude[1], longtitude[2])

    f.seek(old_pos)

    @staticmethod

    def parse_make(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(count)

    a = byte.encode('hex')

    print 'Make:\t\t' + binascii.a2b_hex(a)

    f.seek(old_pos)

    @staticmethod

    def parse_model(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(count)

    a = byte.encode('hex')

    print 'Model:\t\t' + binascii.a2b_hex(a)

    f.seek(old_pos)

    @staticmethod

    def parse_datetime(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(count)

    a = byte.encode('hex')

    print 'DateTime:\t' + binascii.a2b_hex(a)

    f.seek(old_pos)

    # rational data type, 05

    @staticmethod

    def parse_xresolution(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(4)

    numerator = byte.encode('hex')

    byte = f.read(4)

    denominator = byte.encode('hex')

    xre = int(numerator, 16) / int(denominator, 16)

    print 'XResolution:\t' + str(xre) + ' dpi'

    f.seek(old_pos)

    @staticmethod

    def parse_yresolution(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(4)

    numerator = byte.encode('hex')

    byte = f.read(4)

    denominator = byte.encode('hex')

    xre = int(numerator, 16) / int(denominator, 16)

    print 'YResolution:\t' + str(xre) + ' dpi'

    f.seek(old_pos)

    @staticmethod

    def parse_exif_ifd(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(2)

    a = byte.encode('hex')

    exif_ifd_number = int(a, 16)

    for i in xrange(exif_ifd_number):

    byte = f.read(2)

    tag_id = byte.encode('hex')

    #print tag_id,

    byte = f.read(2)

    type_n = byte.encode('hex')

    #print type_n,

    byte = f.read(4)

    count = byte.encode('hex')

    #print count,

    byte = f.read(4)

    value_offset = byte.encode('hex')

    #print value_offset

    value_offset = int(value_offset, 16)

    EXIF_IFD_DICT.get(tag_id, ParseMethod.parse_default)(f, count, value_offset)

    f.seek(old_pos)

    @staticmethod

    def parse_x_pixel(f, count, value):

    print 'X Pixels:\t' + str(value)

    @staticmethod

    def parse_y_pixel(f, count, value):

    print 'y Pixels:\t' + str(value)

    @staticmethod

    def parse_gps_ifd(f, count, offset):

    old_pos = f.tell()

    f.seek(12 + offset)

    byte = f.read(2)

    a = byte.encode('hex')

    gps_ifd_number = int(a, 16)

    for i in xrange(gps_ifd_number):

    byte = f.read(2)

    tag_id = byte.encode('hex')

    #print tag_id,

    byte = f.read(2)

    type_n = byte.encode('hex')

    #print type_n,

    byte = f.read(4)

    count = byte.encode('hex')

    #print count,

    byte = f.read(4)

    value_offset = byte.encode('hex')

    #print value_offset

    count = int(count, 16)

    value_offset = int(value_offset, 16)

    GPS_IFD_DICT.get(tag_id, ParseMethod.parse_default)(f, count, value_offset)

    f.seek(old_pos)

    IFD_dict = {

    '010f' : ParseMethod.parse_make ,

    '0110' : ParseMethod.parse_model ,

    '0132' : ParseMethod.parse_datetime ,

    '011a' : ParseMethod.parse_xresolution ,

    '011b' : ParseMethod.parse_yresolution ,

    '8769' : ParseMethod.parse_exif_ifd ,

    '8825' : ParseMethod.parse_gps_ifd

    }

    EXIF_IFD_DICT = {

    'a002' : ParseMethod.parse_x_pixel ,

    'a003' : ParseMethod.parse_y_pixel

    }

    GPS_IFD_DICT = {

    '0002' : ParseMethod.parse_latitude ,

    '0004' : ParseMethod.parse_longtitude

    }

    with open('image.jpg', 'rb') as f:

    byte = f.read(2)

    a = byte.encode('hex')

    print 'SOI Marker:\t' + a

    byte = f.read(2)

    a = byte.encode('hex')

    print 'APP1 Marker:\t' + a

    byte = f.read(2)

    a = byte.encode('hex')

    print 'APP1 Length:\t' + str(int(a, 16)) + ' .Dec'

    byte = f.read(4)

    a = byte.encode('hex')

    print 'Identifier:\t' + binascii.a2b_hex(a)

    byte = f.read(2)

    a = byte.encode('hex')

    print 'Pad:\t\t' + a

    print

    print 'Begin to print Header.... '

    print 'APP1 Body: '

    byte = f.read(2)

    a = byte.encode('hex')

    print 'Byte Order:\t' + a

    byte = f.read(2)

    a = byte.encode('hex')

    print '42:\t\t' + a

    byte = f.read(4)

    a = byte.encode('hex')

    print '0th IFD Offset:\t' + a

    print 'Finish print Header'

    print 'Begin to print 0th IFD....'

    print

    #print 'Total: ',

    byte = f.read(2)

    a = byte.encode('hex')

    interoperability_number = int(a, 16)

    #print interoperability_number

    for i in xrange(interoperability_number):

    byte = f.read(2)

    tag_id = byte.encode('hex')

    #print tag_id,

    byte = f.read(2)

    type_n = byte.encode('hex')

    #print type_n,

    byte = f.read(4)

    count = byte.encode('hex')

    #print count,

    byte = f.read(4)

    value_offset = byte.encode('hex')

    #print value_offset

    count = int(count, 16)

    value_offset = int(value_offset, 16)

    # simulate switch

    IFD_dict.get(tag_id, ParseMethod.parse_default)(f, count, value_offset)

    print

    print 'Finish print 0th IFD....'

    总结

    利用Python读取图片属性信息的实现方法到这就基本结束了,大家都学会了吗?希望这篇文章对大家的学习或者工作带来一定的帮助,

    更多Python读取图片属性信息的实现方法相关文章请关注PHP中文网!

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 在Windows文件管理器中,可以查看图片的属性信息,如下图所示。 VBA无法直接读取图片属性信息,借助`WIA`对象就能轻松读取这些信息。

    在Windows文件管理器中,可以查看图片的属性信息,如下图所示。
    在这里插入图片描述
    VBA无法直接读取图片属性信息,借助WIA对象就能轻松读取这些信息。示例代码如下。

    Sub GetImgSize()
        Dim objWIA As Object
        Dim Image As String
        Image = "c:\temp\1.jpg"
        On Error Resume Next
        Set objWIA = CreateObject("WIA.ImageFile")
        If objWIA Is Nothing Then Exit Sub
        On Error GoTo 0
        objWIA.LoadFile Image
        Debug.Print "宽度:" & objWIA.Width & "像素"
        Debug.Print "高度:" & objWIA.Height & "像素"
        Debug.Print "水平分辨率:" & objWIA.HorizontalResolution & " dpi"
        Debug.Print "垂直分辨率:" & objWIA.VerticalResolution & " dpi"
        Debug.Print "位深度:" & objWIA.PixelDepth
        Set objWIA = Nothing
    End Sub
    

    【立即窗口】中输出如下图所示。
    在这里插入图片描述
    【代码解析】
    第4行代码指定图片全路径。
    第5行代码忽略运行时错误,继续执行。
    第6行代码创建WIA对象.
    如果创建失败,第7行代码终止代码过程的执行。
    第8行代码恢复错误处理机制。
    第9行代码加载图片文件。
    第10~14行代码输出图片信息。
    第15行代码释放对象变量占用的系统资源。


    相关文章链接:

    VBA读取图片属性信息(1/4)

    VBA读取图片属性信息(2/4)

    VBA读取图片属性信息(3/4)

    VBA读取图片属性信息(4/4)

    展开全文
  • 设置html背景图片属性

    千次阅读 2021-01-12 10:00:54
    #big { background-image: url(${basePath}/dist/img/login.png); background-repeat: no-repeat; background-position: top; background-attachment: fixed; } #login-body { left: 55%;... .
     #big {
                background-image: url(${basePath}/dist/img/login.png);
                background-repeat: no-repeat;
                background-position: top;
                background-attachment: fixed;
            }
    
            #login-body {
                left: 55%;
                position: relative;
                width: 500px;
                top: 35%;
            }
    
    展开全文
  • 条条大路通罗马,本文将介绍如何使用Shell对象读取图片尺寸信息。

    条条大路通罗马,本文将介绍如何使用Shell对象读取图片尺寸信息。
    示例代码如下。

    Sub Demo()
        Dim objShell As Object
        Dim objFolder As Object
        Dim objFile As Object
        Dim strRes As String
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.Namespace("c:\temp")
        Set objFile = objFolder.ParseName("1.jpg")
        strRes = objFile.ExtendedProperty("Dimensions")
        Debug.Print "分辨率:" & Mid(strRes, 2, Len(strRes) - 2)
        Set objFile = Nothing
        Set objFolder = Nothing
        Set objShell = Nothing
    End Sub
    

    运行结果如下图所示。
    在这里插入图片描述
    【代码解析】
    第2~5行代码声明变量。
    第6行代码创建Shell对象。
    第7行代码指定文件目录。
    第8行代码指定图片文件名称。
    第9行代码获取文件的扩展属性Dimensions,注意返回值包含前导和尾随问号,其ASCII值为63。
    在这里插入图片描述
    第10行代码使用字符函数获取分辨率信息。


    相关文章链接:

    VBA读取图片属性信息(1/4)

    VBA读取图片属性信息(2/4)

    VBA读取图片属性信息(3/4)

    VBA读取图片属性信息(4/4)

    展开全文
  • 定义背景图片使用 @baseName:wrap; //url 定义: @img : "../img"; @img :'../image'; #@{baseName}{ width: @c*10; height: @b*10; background: url('@{img}/less.jpg'); } url定义图片的路径 background:url...
  • 大多数人可能对photoshop都很熟悉,也会熟练的...方法/步骤1、为了便于比较我们首先来看一下没有修改前的图片属性,格式为jpg格式,大小为1920*1120.2、我们现在开始修改工作,打开画图工具,我们可以通过按下“w...
  • 【实例介绍】html背景图片滚动属性bgproperties在默认情况下,如果页面的内容较长,当拖动浏览器滚动条的时候,背景会随着文字内容的滚动而滚动,所谓背景图像固定,是指不论浏览器的滚动条如何拖动,背景都永远固定...
  • matlab_simulink_示波器_scope图片属性设置.doc 毕业季节,很多忙碌于毕业设计的同学都为如何在Simulink中Scope获得白色背景而苦恼,因为论文是白纸黑字,总不能让Simulink中Scope图也来个黑兮兮的背景和黑色的线条...
  • 在css代码中设置背景图片的方法,包括背景图片、背景重复、背景固定、背景定位等用css设置网页中的背景图片,主要有如下几个属性:1,背景颜色{">说明:参数取值和颜色属性一样注意:在HTML当中,要为某个对象...
  • 一、图形属性、 1、图形属性列举、 2、绘图对象、 二、图形属性设置、 1、图形属性界面、 2、坐标轴属性、 3、线属性、 4、文本属性、 三、图形属性设置策略、
  • 创作不易 拒绝白嫖 点个赞呗 关注专栏 学透CSS,带你走进CSS的深处!...background-repeat:属性值; repeat:在两个方向上平铺图像。这是默认值。 background-image: url('./juejin.png'); background-.
  • 读不在三更五鼓,功只怕一曝十寒。 看完觉得有收获的,点个赞呗!!! 前言 前有background-image 为背景增光增彩,后有mask-image 给背景增加可玩性,今天我们来聊聊...首先这个属性是下面个属性的缩写, border
  • 题目:java中类定义的属性是什么意思解答:就是类里面定义的一个字符串,数值,list,map等这样的一个变量或者常量/*** 这是Manager类*/public class Manager {String username="张三";//定义Manager类的一个属性String...
  • IOS系统自带的看图软件不支持查看照片属性,你可以借助微信,QQ软件。打开QQ,或者微信,发送图片选择原图就可以看查看图片大小。当然还可以用其他的软件。首先我们去苹果APP Store下载Exif照片查看器。然后打开软件...
  • 一、定义属性:一般定义属性都是为了动态的去获取属性的值,或者动态的设置属性的值,如果想仅仅是设置一个普通的属性,直接在便签上设置属性即可,就像使用html的title、name等属性一样,如H1标签。下面具体说动态...
  • 现在任何一个网页都是离不了图片,一个网站如果是图文结合的网页,那么会受到很多用户的喜爱,如果网站想要多更多的流量,也是离不来图片的,那么接下来了解一下图像标签img,为您总结一下html img标签属性是什么?...
  • 中align属性怎么使用?如下列代码: stock: W3C官方给出的解释是:所有浏览器都支持 align 属性的 "left" 和 "right" 值,除了 opera。"bottom" 值在所有浏览器中都不起作用。td中的align属性是什么作用td的align...
  • CSS设置背景图像的属性

    千次阅读 2021-01-22 10:58:12
    //为背景图位置固定不变,固定在屏幕上 background-size:100% 100% 背景图片缩放 display的用法 display: none; //把原来文本显示的文字隐藏起来 display: block; //把原来文本隐藏的文字显示出来 列表属性:list-...
  • 图片的路径和属性

    2021-01-24 11:41:11
    1.路径: ...2.属性: src:路径(相对路径、绝对路径) alt:规定图像的替代文本——图片没有显示时的提示文字 title:鼠标悬停在图片上给予提示 width:规定图像的宽度。 height:规定图像的高度 ...
  • Vue项目中background-image属性设置方法

    千次阅读 2021-04-07 10:44:55
    vue项目中background-image属性设置方法 方式一:直接访问 在vue-cli项目中的放在public目录下的资源会被直接复制,不会经过webpack的打包处理。 <span class="item-icon"></span> <style> .item...
  • css3如何隐藏图片

    2021-06-13 03:39:45
    css3隐藏图片的方法:1、为图片元素设置display:none;样式来隐藏。2、使用visibility:hidden;样式隐藏图片。3、使用opacity:0;样式通过设置图片完全透明来设置图片不可见。css中可以使用下面几种样式隐藏图片:...
  • 了解了通用渲染设置选项命令之后,需要分别对Software Render(软件渲染)、Hardware Render(硬件渲染)、Hardware 2.0 Render(硬件2.0渲染)和Vector Render(矢量渲染)各自独有的属性设置进行说明。Anti-aliasing ...
  • 5.uniapp中image属性用法

    2021-04-09 16:18:20
  • 想必大家都常被页面居中这个问题困扰吧,这里简单分享一下一个使用background样式属性来实现图片居中的新用法。很久以前本骚年常用image.onload()这样的方式获取图片大小再进行调整,得到图片原比例居中的效果,自从...
  • 利用js实现点击按钮切换图片的功能,并且能够记录当前所展示的图片的位置,通过这个练习来巩固一下对DOM中的节点查询和事件绑定的知识。 提示:以下是本篇文章正文内容,下面案例可供参考 一、DOM是什么? DOM全称:...
  • 给body设置背景图片

    千次阅读 2021-03-06 23:30:25
    background-size属性MDN详解 background-attachment background-attachment CSS 属性决定背景图像的位置是在视口内固定,或者随着包含它的区块滚动。 fixed 此关键属性值表示背景相对于视口固定。即使一个元素拥有...
  • 由于我们识别声音或图片的能力有限,因此稍微改动信息的某字节位的数据是不会影响我们识别声音或图片的。举个最通俗的例子,古人的藏头诗就是隐写的一种方式: 而CTF图片隐写术就是利用图片来隐藏一些机密信息...
  • 在前端开发过程中,为了页面的美观,往往都会给html页面添加背景图片。...css background属性就是专门设置背景的属性,可以设置背景色,也可以设置背景图片。下面看看background可以设置的属性:background-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 915,143
精华内容 366,057
关键字:

图片属性