我只是“移动”图像,它的元数据就会改变......

2024-03-18

我只是复制了图像并将其保存到当前目录中的另一个临时文件夹中,没有任何修改,但图像占用了更多“磁盘空间“比它”字节大小".

和!当我这样做时,我只丢失了大部分图像的元数据,例如位置数据、设备型号、F 号等Color space, Alpha channel and Dimensions被保存下来。

这是我所做的代码:

from PIL import Image
import os

image_path = "/Users/moomoochen/Desktop/XXXXX.jpg"
img = Image.open(image_path)
pathname, filename = os.path.split(image_path)

new_pathname = (pathname + "/temp")

if not os.path.exists(new_pathname):
    os.makedirs(new_pathname)
    img.save(os.path.join(new_pathname, filename))

    # If I want to adjust the quality, I do this:
    img.save(os.path.join(new_pathname, filename), quality=80)

所以我的问题是:

1)为什么字节大小与磁盘空间不同?

2)如何调整我的代码以保留所有图像的元数据?


两件事情...

你其实不是“简单地复制”你的文件。您在图像处理器中打开它,将其扩展为可处理的像素矩阵,然后将图像重新保存到磁盘 -减去您的图像处理器不感兴趣的任何内容 :-)

如果要复制包括 EXIF 数据的完整文件,请使用shutil像这样:

#!/usr/local/bin/python3

from shutil import copyfile
copyfile('source.jpg', 'destination.jpg')

报到Finder:


其次,所有“磁盘上”文件系统有一个最小分配单位,这意味着如果你的文件增长,它也会增长一个完整的单位,即使你只需要多 1 个字节的空间。大多数磁盘使用 4,096 字节分配单元,因此 33 字节文件将占用 4,096 字节空间。我必须说你的冗余比 4k 更高,所以也许你正在运行在大块中的胖 RAID 上以提高性能?

例如,您可以在终端中执行此操作:

# Write a file with 1 logical byte
echo -n "1" > file

# Look at file on disk
ls -ls file

8 -rw-r--r--  1 mark  staff  1 15 Nov 08:10 file

仔细一看,1 after staff意味着逻辑大小是 1 个字节,这就是程序读取整个文件时得到的大小。但第一个8左边是磁盘上的块数。每个块是 512 字节,因此这个 1 字节文件需要 8 个 512 字节的块,即磁盘上的 4kB!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我只是“移动”图像,它的元数据就会改变...... 的相关文章

  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • GKE 出现错误:ImagePullBackOff 和错误:ErrImagePull 错误

    当 kubectl 应用 yaml 将自定义构建的 docker 映像部署到 GCP 中的集群 编辑掉敏感信息 时 我收到以下错误 已尝试以下但没有运气 手动部署镜像 检查以确保防火墙规则允许 443 并且没有任何东西阻止它 尝试将容器注册
  • 从项目文件加载图像

    我正在尝试获取 png 图像 这是我的资源文件夹 我测试了这里写的解决方案 将图像添加到列表框 c Windows Phone 7 https stackoverflow com questions 9348766 add images t
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • Python 3:http.server 支持 ipv6 吗?

    Does http server http作为 Python 3 x 模块 支持 ipv6 例如 使用以下命令行代码 启动网络服务器 python m http server port 从 Python 3 8 开始 python m ht
  • java设置图像的分辨率和打印尺寸

    我编写了一个程序 生成一个 BufferedImage 以显示在屏幕上 然后打印 图像的一部分包括 1 像素宽的网格线 即 一行为1个像素 行与行之间大约有10个像素 由于屏幕分辨率的原因 图像显示得比这大得多 每行有几个像素 我想将其绘制
  • requests.iter_content() 认为文件已完成,但事实并非如此

    这个问题与我见过的其他问题不同requests iter content 在那里面requests似乎认为它已成功到达我正在迭代的文件末尾 实际上 该文件已被截断且不完整 我尝试处理的文件是一个 17gb gzip 需要丰富并存储在数据库中
  • Javascript图像编辑插件

    在哪里可以找到 Javascript 或 jQuery 图像编辑器插件 用户可以单击图像进行编辑 并且该插件允许他们进行裁剪 调整大小 旋转 翻转等 Pixastic http pixastic com lib 不再活跃 和CamanJS
  • 如何在Google机器学习中将jpeg图像转换为json文件

    我正在研究 Google Cloud ML 我想对 jpeg 图像进行预测 为此 我想使用 gcloud beta ml 预测 instances INSTANCES model MODEL version VERSION https cl
  • pip install django_compressor 时命令 cl.exe 失败

    我发布此消息是因为我遇到了这个问题 并且已经尝试解决这个问题好几天了 但未能成功 当我尝试安装 django compressor pip install django compressor 时 我遇到以下错误 请参阅附件 我在网上搜索解决
  • 如何从 PyObject 获取指向字符串的 char*

    我怎样才能得到一个char from a PyObject它指向一个字符串 例如 这是 python 脚本 Test Connect 272 22 20 65 1234 这是 C 代码 static PyObject Connect PyO
  • 显示居中的图像行

    我有一排三张图像 目前显示得很好 现在 我想在这三个图像的正下方显示另外两个图像 并且我希望它们居中 它看起来有点像一个颠倒的金字塔 无论我做什么 底行都保持左对齐 这是 css category width 176px font size
  • 在python中将二维数组转换为彩色图像

    我有这样的二维整数列表 list1 1 30 50 21 45 9 97 321 100 接下来我将把它转换为 numpy 数组 myarr np asarray list1 接下来我将使用 PIL 将其转换为图像 如下所示 img Ima
  • DICOM 和 DICOM 叠加问题

    我有一个 DICOM 图像 我正在使用 C 读取该图像并将其转换为 16 位位图 位图已创建 但图像具有 DICOM 覆盖 我想在创建最终的 dicom 位图时将叠加层刻录到位图中 我无法做到这一点 有什么帮助吗 一种方法是创建覆盖数据的位
  • AttributeError:模块“pandas”没有属性“read_csv”Python3.5

    我已经成功使用pandas read csv很久以来 当我尝试读取 csv 文件时 突然开始出现错误 df pd read csv file csv encoding utf 8 错误是 AttributeError module pand
  • Flask-Mail - 基于 Flask-Cookiecutter 异步发送电子邮件

    我的烧瓶项目基于烧瓶饼干切割机 https github com sloria cookiecutter flask我需要异步发送电子邮件 发送电子邮件的功能由以下配置米格尔的教程 https blog miguelgrinberg com
  • 如何使用 jquery imgAreaSelect 用 php 裁剪图像?

    我正在使用以下 javascript 代码来实例化 jquery图像区域选择 http odyniec net projects imgareaselect 裁剪我的图像 document ready function ladybug im
  • 使用 asyncio 时应该如何创建属性?

    在创建使用 asyncio 的类时 我发现自己处于属性 getter 需要进行 io 操作的情况 因此该函数应该是一个协程 然而 等待房产的感觉却很不寻常 这是我的意思的一个最小的例子 该代码有效并且可以运行 import asyncio
  • Python中矩阵元素的双重求和

    基于下面的简化示例 我想在我的代码中 from sympy import import numpy as np init printing x y symbols x y mat Matrix x 1 1 y X 1 2 3 Y 10 20
  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b

随机推荐

  • 编译器内部如何解决C++中的钻石问题?

    我们知道可以使用虚拟继承来解决钻石问题 例如 class Animal base class int weight public int getWeight return weight class Tiger public Animal c
  • Android:如何判断软键盘是否显示?

    困境如下 我正在显示一个屏幕 其中有 3 个输入字段和一个选项卡内有 2 个按钮 总共有 3 个选项卡 它们位于屏幕底部 这 2 个按钮设置在屏幕的左下角和右下角 选项卡的正上方 当我单击输入字段时 选项卡和按钮都会被推到键盘顶部 我只想向
  • UIButton setAttributedTitle:forState:未显示

    我试图在自定义 UIButton 上的标题上添加下划线 但按照发现的示例here https stackoverflow com a 15930032 329900 我无法让它显示在屏幕上 这是我尝试使用的代码 NSMutableAttri
  • 我应该使用哪个高级 API 来管理 iOS 上的 UDP 套接字? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在章节 使用套接字和流 https developer apple com library mac d
  • 警告错误 6002:表/视图没有定义主键

    此主题已多次出现 但没有答案让我选择如何在 EF 中避免此问题 我的警告 警告错误 6002 表 视图 ADContainersWithEnvironmentsView 没有定义主键 关键已经推断出来了 定义被创建为只读表 视图 基本上 我
  • 自动调整闪亮的图表大小

    如何在闪亮的情况下自动调整 rChart 绘图的大小 我想使绘图适合用户的屏幕 就像使用 renderPlot 对常规绘图所做的那样 这是一个最小的例子 Server R require rCharts shinyServer functi
  • 可移植类库反射

    我目前正在尝试将 Xamarin iOS 应用程序库转换为 PCL 配置文件 78 我有这段代码无法编译 public static void RegisterAllCommandHandlers IEnumerable
  • 加速 jQuery AutoComplete(不可避免的长列表)

    今天下午早些时候 我开始了加速 jQuery 自动完成的旅程 并认为开始可能是个好主意内存缓存一切 正如本文所建议的 加快自动完成速度 https stackoverflow com questions 5820741 jquery ui
  • 证明对于以下每个,g(n) 都是 O(g(n)) [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 2 sqrt log n is O n 4 3 n 4 3 is O n log n 3 n log n 3 is O n log n
  • Android 上具有多个模块的 Firebase 推送通知

    我目前正在尝试在我们的应用程序中实现推送通知 所以我们有三个模块 App 1 Logic App 2 我显然给了他们名字 应用程序 1 和 2 依赖于逻辑模块 该模块包含两个应用程序的所有逻辑 现在 我希望向登录应用程序 1 或应用程序 2
  • 如何保存动态创建的文本框及其值

    我正在开发一个需要保存动态创建的文本框的项目 我需要在第二次运行应用程序时显示文本框的数据 这是我的代码 public partial class Form1 Form public Form1 InitializeComponent st
  • JavaScript 提交期间未传递 URL 参数

    我正在尝试从 javascript 提交表单 表单已提交 但参数未传递 下面是我的代码
  • Mongocxx 无法使用 SSL 连接到 mongoDB

    我完成了以下教程 https medium com rajanmaharjan secure your mongodb connections ssl tls 92e2addb3c89 https medium com rajanmahar
  • 什么是更新每用户系统参数?

    在我的服务中 我需要在更改登录屏幕保护程序超时后发出 刷新 在做研究的同时 我不断地寻找参考资料 http social technet microsoft com Forums windows en US c5979d78 9732 41
  • 通过 Javascript 访问 Twitter

    我正在构建一个通过以下方式使用 twitter 的网络应用程序 1 用户可以使用 Twitter 登录 即用户对应用程序进行身份验证和授权 我得到以下内容 我存储到服务器的 oauth token secret OAUTH TOKEN SE
  • Android:使用java反射更改私有静态最终字段

    使用 Java 反射更改私有静态最终字段 https stackoverflow com questions 3301635 change private static final field using java reflection 我
  • 将 Web Workers 捆绑为 npm 包的组成部分,并具有单个文件 Webpack 输出

    我正在编写一个 npm 包 它是流行库 leafletjs 的插件 我正在使用 webpack 来捆绑包 我希望这个包能够根据命令生成和销毁一些网络工作者 Web Worker 代码是我的源文件的一部分 但我希望能够将我的包作为 npm 模
  • Python Pandas,仅在特定时间重新采样

    我的 pandas 版本是 0 18 我有一个如下所示的分钟数据 Time 2009 01 30 09 30 00 85 11 100 11 2009 01 30 09 39 00 84 93 100 05 2009 01 30 09 40
  • 在 Redshift 中创建后如何更改表架构?

    Postgresql 支持此操作 如下所示 ALTER TABLE name SET SCHEMA new schema 该操作在 Redshift 中不起作用 有什么办法可以做到这一点吗 我尝试更新 pg class 来为表设置 reln
  • 我只是“移动”图像,它的元数据就会改变......

    我只是复制了图像并将其保存到当前目录中的另一个临时文件夹中 没有任何修改 但图像占用了更多 磁盘空间 比它 字节大小 和 当我这样做时 我只丢失了大部分图像的元数据 例如位置数据 设备型号 F 号等Color space Alpha cha