Mac Automator 图片自动压缩上传 COS

把个人博客放在了 netilfy 托管,它给了一个优化建议,可以压缩图片节省带宽。但是每次截图后都要再压缩下图片有点麻烦,于是想着应该可以偷偷懒。目标很明确,截图后图片传到我的 git 仓库 images 目录后,能给我自动压缩,并且上传 COS,这样我就只用在 markdown 文件里面拼链接就好了。

打开 Web Browsing 功能的 GPT4,让他帮忙实现吧。博客原文地址在这里。

图片自动压缩

监听文件并压缩

Human:
在 mac 上,我有一个目录,想在目录里面添加文件的时候,自动对图片进行压缩,替换原来的文件。要怎么实现呢?

ChatGPT:
你可以通过使用 Automator(自动操作程序)来实现这个功能。Automator 是 Mac OS X 提供的一种强大工具,能帮助你自动执行各种任务。

以下是设置步骤:

  1. 打开 Automator(位于“应用程序”文件夹中)。
  2. 点击“新建文稿”,然后选择“文件夹操作”。
  3. 在弹出的窗口中,选择你要监视的文件夹。
  4. 在左侧面板中,找到并双击“缩放图片”。
  5. 在弹出的对话框中,设置你希望的图片大小。
  6. 另外,你可能需要添加一个“复制 Finder 项目”操作,将原始图片复制到另一个地方,以防万一。你可以在左侧面板中找到并双击它。
  7. 最后,保存你的 Automator 工作流程。

这样,每当你向该文件夹添加图片时,Automator 都会自动将其缩放到你指定的大小,然后替换原来的图片。请注意,这个方法会覆盖原始图片,因此如果你不想丢失原始图片,最好先做好备份。


Human:
这里我想用 https://imageoptim.com/command-line.html 中提到的ImageOptim 来压缩图片,要怎么做呢

ChatGPT:
在使用 ImageOptim 命令行工具前,你需要先确保它已经安装在你的 Mac 上。你可以通过以下命令安装它:

npm install -g imageoptim-cli

然后,你可以在 Automator(自动操作程序)中使用 Shell 脚本来调用 ImageOptim。以下是具体步骤:

  1. 打开 Automator(位于“应用程序”文件夹中)。
  2. 点击“新建文稿”,然后选择“文件夹操作”。
  3. 在弹出的窗口中,选择你要监视的文件夹。
  4. 在左侧面板中,找到并双击“运行 Shell 脚本”。
  5. 在弹出的对话框中,输入以下命令:
    for f in "$@"
    do/usr/local/bin/imageoptim "$f"
    done
    
  6. 最后,保存你的 Automator 工作流程。

这样,每当你向该文件夹添加图片时,Automator 就会自动调用 ImageOptim 命令行工具对其进行压缩,并替换原来的文件。

请注意,这个方法会覆盖原始图片,因此如果你不想丢失原始图片,最好先做好备份。

也请注意,这个脚本假设你的 ImageOptim 命令行工具是通过 npm 安装的,且安装位置在 /usr/local/bin/。如果你的安装位置不同,你需要修改脚本中的路径。


Human:
我按照上面方法保存Automator之后,往步骤 3 里面的文件夹加了一个图片,但是并没有被压缩,是怎么回事呢?

ChatGPT:
这可能有几个原因,我们可以进行以下排查:

  1. 确认你的 Automator 文件夹操作是否正确保存,并且指定的是正确的文件夹。
  2. 确认在 Automator 工作流程中添加的 “运行 Shell 脚本” 操作里的命令是否正确。特别要注意 ImageOptim 命令行工具的路径是否正确。
  3. 查看是否有权限问题。你可能需要给 Automator 工作流程足够的权限来修改文件夹中的图片。
  4. 最后,确保 ImageOptim CLI 工具已经正确安装,并可以在 Terminal(终端)中直接运行。

如果以上步骤都无法解决问题,你可以尝试在 Automator 的 “运行 Shell 脚本” 操作中添加一些调试代码,例如在命令中添加 echo “$f” 来查看正在处理的文件路径,或者在命令最后添加 2> /path/to/error.log 来将可能的错误输出到一个日志文件。

这里真的超出预期了,直接教你打日志来排查问题,有点专业工程师的感觉。


Human:
我加了 2> /path/to/error.log,但是没有任何日志输出

ChatGPT:
如果没有任何日志输出,这可能表明你的 Automator 工作流程没有被正确触发,或者 “运行 Shell 脚本” 操作没有被正确执行。

我建议你首先检查你的 Automator 工作流程是否被正确保存,并且关联到了正确的文件夹。你可以尝试重新创建一个新的文件夹操作,以确保所有的设置都是正确的。

然后,你可以在 “运行 Shell 脚本” 操作中添加一些简单的调试代码,例如 echo "Hello, world!" > /path/to/debug.log。然后再添加一个新的图片到文件夹中,看看是否有任何输出。

如果这个简单的测试也不能工作,那么问题可能出在 Automator 或者你的系统设置上。你可以检查你的系统设置,确保 Automator 有足够的权限来监视文件夹和修改文件。你也可以尝试在 Automator 中创建一个新的文件夹操作,看看是否有其他的操作能够被正确触发。

如果这个简单的测试可以工作,那么问题可能出在 ImageOptim CLI 工具或者你的 Shell 脚本上。你可以在 Terminal(终端)中手动运行相同的 ImageOptim 命令,看看是否有任何错误。


Human:
我的 shell 如下

echo "Hello, world!" >> ~/Desktop/error.log
for f in "$@"
do/Users/daemonzhao/.nvm/versions/node/v20.2.0/bin/imageoptim "$f"
done2>> ~/Desktop/error.log

这里 error.log 只输出了 Hello, world!$@ 应该是空值。

这里后面又有几轮聊天,GPT4 开始并没有给出一个正确的答案。不过我们可以信任 GPT、然后验证 GPT 的内容。

换 Apple Script


Human:
Automator的 Folder Actions,如何成功拿到新添加的文件路径。上面你给出的方法拿不到,所以没法执行 shell 脚本

ChatGPT:
对不起刚刚的解答可能有些误导。在 Automator 的 “运行 Shell 脚本” 操作中,“$@” 是代表所有的参数,而在 Folder Actions 中,这些参数就是新添加到文件夹的文件路径。

不过,如果你的脚本中 “$@” 是空的,那么可能是因为 Automator 并没有正确地将文件路径作为参数传递给 Shell 脚本。

为了解决这个问题,你可以尝试使用 AppleScript 而不是 Shell 脚本来获取文件路径。你可以在 Automator 中添加一个 “运行 AppleScript” 操作,然后使用以下的代码:

on run {input, parameters}tell application "Finder"set filePath to the POSIX path of (input as alias)do shell script "/path/to/your/command " & filePathend tell
end run

这个 AppleScript 脚本会将新添加到文件夹的文件路径作为 input 参数传递给 run 函数,然后使用 Finder 来获取文件的 POSIX 路径,最后执行你的 Shell 命令。

注意你需要将 /path/to/your/command 替换为你想要执行的 Shell 命令,比如 ImageOptim CLI 的路径。你也可以在 do shell script 命令中添加其他的参数,比如文件路径。

这是一个实例,你可以根据你的需要进行修改。希望这个方法能够解决你的问题!

最开始让用 shell script,一直拿不到增加的文件,这次换了 apple script,一下子就拿成功了。


Human:
不能将“current application”转换为“alias”类型。

ChatGPT:
对不起,我犯了个错误。在 AppleScript 中,input 参数是一个列表,表示所有传递给脚本的文件。如果你想要处理每个文件,你需要使用一个循环。这是一个修改后的脚本:

on run {input, parameters}repeat with i in inputset filePath to POSIX path of ido shell script "/path/to/your/command " & quoted form of filePathend repeat
end run

这个脚本会遍历所有传递给脚本的文件,获取每个文件的 POSIX 路径,然后执行你的 Shell 命令。注意 quoted form of filePath 是用来确保文件路径在传递给 Shell 命令时被正确引用,这对于含有空格或其他特殊字符的文件路径是必要的。

你需要将 /path/to/your/command 替换为你想要执行的 Shell 命令,比如 ImageOptim CLI 的路径。你也可以在 do shell script 命令中添加其他的参数,比如文件路径。

这次终于成功了,但是压缩速度有点慢。

更换压缩工具


Human:
除了 ImageOptim ,mac 上还有其他免费的工具可以压缩图片吗?要求有较快的速度和较高的无损压缩比。

ChatGPT:
在 Mac 上除了 ImageOptim,你还有以下一些免费的图片压缩工具可以选择:

  1. Preview:这是 Mac 自带的一个应用程序,可以用来压缩图片。你可以选择单个或多个图片来进行压缩,方法是打开 Preview,然后点击顶部菜单栏的“文件” > “导出”。然后你可以选择图片的格式,并通过调整质量滑块来压缩图片​1​。
  2. Mac 的 Photos 应用:你也可以使用 Mac 的 Photos 应用来压缩图片。你可以在 Photos 应用中选择一张或多张照片,然后按 Command + Shift + E 或从顶部菜单栏点击“文件” > “导出” > “导出照片”来压缩图片​1​。
  3. 图片压缩应用:Mac App Store 有许多可以压缩图片的应用。比如你可以在 App Store 中搜索“压缩图片”,就可以找到一些相关的应用https://www.idownloadblog.com/2022/01/04/how-to-compress-image-mac/​1​。
  4. 在线图片压缩网站:你也可以选择使用在线的图片压缩服务,比如 iLoveIMG.com 和 ShortPixel.com。这些在线服务可以方便快捷地压缩图片,但你需要注意的是,你上传的图片会被存储在这些网站的服务器上,所以对于包含个人或敏感信息的图片,建议使用离线的压缩方法​1​。

这里用了 browsing 功能,GPT 自己去网上搜索。


Human:
我想找的是能在 mac 本地命令行运行的压缩图片工具,你有啥建议的

ChatGPT:
在 Mac 上,有一些命令行工具可以用来压缩图片:

  1. jpegoptim:这是一个用来优化和压缩 JPEG 图片的命令行工具。你可以使用 Homebrew 来安装它,命令是 brew install jpegoptim。压缩一个 JPEG 图片的命令是 jpegoptim --size=100k your_image.jpg,这会将 your_image.jpg 压缩到 100KB 或更小的大小。
  2. optipng:这是一个 PNG 图片优化工具,可以通过命令行使用。安装命令是 brew install optipng。使用 OptiPNG 压缩图片的命令是 optipng -o7 your_image.png,这会使用最高级别的优化选项来压缩 your_image.png。
  3. pngquant:这是另一个用于 PNG 图片的命令行工具,可以创建具有少量颜色的优质 PNG 图片,从而大大减小文件大小。安装命令是 brew install pngquant。压缩 PNG 图片的命令是 pngquant your_image.png,这会创建一个新的,压缩后的 PNG 图片。

所有这些工具都需要通过命令行来使用,并且可以在脚本中使用,以便于批量处理图片。但是请注意,每个工具都有其自己的一套参数和选项,你可能需要阅读各自的文档来更好地理解如何使用它们。


Human:
我想用 pngquant,我用 brew install pngquant 安装后,如何更改 上面 apple script 的脚本呢

ChatGPT:
你可以将 AppleScript 脚本修改为如下形式,以使用 pngquant 工具:

on adding folder items to this_folder after receiving added_itemstrytell application "Terminal"repeat with i from 1 to number of items in added_itemsset this_item to item i of added_itemsdo shell script "/usr/local/bin/pngquant --force --ext .png " & quoted form of POSIX path of this_itemend repeatend tellend try
end adding folder items to

这段脚本在新的文件添加到文件夹时,会使用 pngquant 来压缩这些文件。–force 选项使得 pngquant 在文件已经存在时会覆盖它,而 --ext .png 选项会使得输出文件的扩展名为 .png。

请注意,你可能需要根据 pngquant 在你的系统上的实际安装位置来修改脚本中的 /usr/local/bin/pngquant。你可以通过在终端运行 which pngquant 命令来找到 pngquant 的实际路径。

同样,你需要根据实际情况来调整 pngquant 的参数。例如,如果你想要指定压缩级别,你可以添加 -quality 参数,如 --quality 60-80。你可以参考 pngquant 的文档来了解更多的参数和选项。

添加图片前缀


Human:
我想在脚本中改一下压缩后的文件名,在每个文件明前面加上日期前缀,比如20230601_ ,要怎么做呢?

ChatGPT:
为了实现这个功能,你需要获取当前日期,然后格式化为你需要的格式。然后,你可以将这个日期前缀添加到文件名中。你可以使用 do shell scriptdate 命令来获取和格式化日期,然后使用 text item delimiters 来修改文件名。以下是你可以尝试的 AppleScript:

on run {input, parameters}tell application "System Events"set currentDate to do shell script "date '+%Y%m%d'"repeat with i in input...end repeatend tell
end run

这个脚本首先获取当前日期,并将其格式化为 “YYYYMMDD” 的形式。然后,对于每个输入文件,它检查扩展名是否为 “png”。如果是,它获取文件名,将其分解为基本名称和扩展名,然后将日期前缀添加到基本名称。然后,它将文件重命名为新的文件名,然后使用新的文件路径来执行 pngquant 命令。

这里有坑,因为没写过apple script,也懒得去看代码。结果这里代码死循环添加前缀,中间和 GPT 交流了几轮,改了几遍代码,有点不顺。最后提示让 GPT 一步步来思考,竟然可以啦。


Human:
还是不行,你重新一步步思考下这个步骤,然后给出一个正确的代码

ChatGPT:
我明白你的问题了,确实是我之前的脚本存在问题。因为每次添加文件到文件夹,Folder Action都会触发一次,处理文件夹中所有的文件。如果同时添加了多个文件,这个Folder Action就会被多次触发,处理的对象包括已经处理过的文件,这就导致了问题。

我们可以修改脚本,使得它只处理那些没有被处理过的文件。具体来说,我们可以检查文件名是否已经包含了日期前缀,如果包含,我们就跳过这个文件。

另外,我们应该在压缩文件后立即重命名文件,而不是在压缩前。因为pngquant工具会直接覆盖原文件,如果我们先重命名再压缩,原文件就不会被压缩,而新文件会保留原来的大小。

下面是修改后的脚本:

on run {input, parameters}set currentDate to do shell script "date '+%Y%m%d'"tell application "System Events"repeat with i in input...end repeatend tell
end run

这个脚本应该可以解决你的问题。它只会处理那些没有被处理过的.png文件,并且在压缩文件后立即重命名文件。同时添加的多个文件也不会造成问题。

这次可以自动压缩重命名了,还想再自动传到 COS 上。

上传 COS

Human:
在上面的改名字和压缩步骤完成后,我想把图片传到 Tencent cos 的某一个 bucket 中,要怎么做呢?

ChatGPT:
首先,你需要在本地安装腾讯云的命令行工具 COSCMD,你可以使用以下命令进行安装:pip install coscmd

然后,你需要配置你的COSCMD。运行以下命令并按照提示输入你的腾讯云 API 密钥(SecretId 和 SecretKey)以及你的地域(Region)和默认的存储桶(Bucket):

coscmd config -a <SecretId> -s <SecretKey> -b <Bucket> -r <Region>

在上面的命令中,,, 和 是你需要替换的部分。例如,你可能需要这样:

coscmd config -a AKIDxxxxxxxx -s xxxxxxxx -b mybucket-1250000000 -r ap-beijing

现在,你可以在 AppleScript 中使用 do shell script 命令来调用 COSCMD 并将文件上传到你的存储桶中。你可以使用 coscmd upload 命令来上传文件,如下所示:

do shell script "coscmd upload " & quoted form of filePath & " /"

所以,你的 AppleScript 可能看起来像这样:

on run {input, parameters}set currentDate to do shell script "date '+%Y%m%d'"tell application "System Events"repeat with i in inputset filePath to POSIX path of iset fileExtension to name extension of i...end repeatend tell
end run

在这个脚本中,我们在重命名文件后获取新的文件路径,并将其上传到 COS。注意,你需要确保你的计算机上已经安装了 Python 和 pip,并且你的腾讯云 API 密钥、Bucket 和 Region 都是正确的。你还需要确保你的 Bucket 允许你上传文件。

这里自己搞错了几个地方,不过 GPT 提示加了 log,然后也很快定位到了。

最终结果

最终脚本如下:

on run {input, parameters}set currentDate to do shell script "date '+%Y%m%d'"tell application "System Events"repeat with i in inputset filePath to POSIX path of iset fileExtension to name extension of iset folderName to do shell script "dirname " & filePathif fileExtension is "png" thenset fileName to name of iset AppleScript's text item delimiters to "."set baseName to first text item of fileNameif baseName does not start with currentDate thendo shell script "/opt/homebrew/bin/pngquant --force --ext .png " & quoted form of filePathset newBaseName to currentDate & "_" & baseNameset newFileName to newBaseName & "." & fileExtensionset name of i to newFileNameset newFilePath to folderName & "/" & newFileNameset uploadCommand to "/opt/homebrew/Caskroom/miniconda/base/bin/coscmd upload " & quoted form of newFilePath & " /"do shell script uploadCommandend ifend ifend repeatend tell
end run

实现的结果,指定一个目录,后面往这个目录新增加的 png,都自动压缩,在前缀加上当前日期,然后传输到腾讯云 COS 上。完整的对话在这里。

最终效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48303.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 28 个天花板技巧,YYDS!

因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号&#xff0c;领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇&#xff1a;ChatGPT研究框架&#xff08;80页PPT&#xff0c;附下载&#xff09;…

CSDN 去除图片水印

想要保存 CSDN 博客中的一张图片时&#xff0c;发现图片上有水印&#xff0c;想要删除&#xff0c;怎么办呢&#xff1f; 如下图 右击图片 --> [在新标签中打开图片] 把问号以及问号后面的内容全部删掉&#xff0c;再访问 呐&#xff0c;水印不见了。 PS&#xff1a;写博…

免费的图片去水印消除水印清除水印去水印方法去水印软件免费下载

是一款免费的图片去水印工具。适用于微博下载的&#xff08;偷的&#xff09;图&#xff0c;从别的地方下载的&#xff08;偷的&#xff09;图等。 ** 直接说下载链接&#xff1a;请点击链接里的普通下载&#xff0c;&#xff08;其他是别的下载器&#xff09; 当然&#xff…

批量图片去水印,操作简单,赶紧收藏!

图片怎么去水印?在平时的日常生活中&#xff0c;我们有时候需要用到一些图片或者视频&#xff0c;但是这些视频或者图片往往会有烦人的水印&#xff0c;我们需要去除水印后才能更好来使用~那么你都是怎么去除水印的呢?有什么比较简单轻松的批量图片去水印方法吗?小编这里有一…

2023新版 多功能去水印工具微信小程序源码_带流量主功能(已更新)

简介&#xff1a; 2023新版 多功能去水印工具微信小程序源码_带流量主功能 自带去水印接口的多功能小程序 支持各大平台短视频去水印 支持保存封面,图集,标题等等 支持本地图片去水印 支持图片拼接 支持九宫格切图 支持修改视频的MD5等等 另外当然也有流量主功能的 链…

去除CSDN博客图片水印

今天写论文时要用到之前写博客时的一张图片&#xff0c;但是直接复制过来有水印 &#xff0c;例如&#xff08;右下角&#xff09;&#xff1a; 后来找到了解决办法&#xff0c;故在这里分享一下&#xff1a; 1.右击博客中的图片&#xff0c;选择复制图片地址&#xff0c;如下&…

二十行代码去除图片水印(别再找工具修图啦)

别再找工具修图啦&#xff0c;用代码吧 图片上常常有多余信息&#xff0c;如水印等&#xff0c;常常困扰啦多少痴男怨女。 在简书上看到一段有意思的内容。于是将它搬啦过来。 原地址&#xff1a;https://www.meiwen.com.cn/subject/dofckqtx.html。 消除水印 原图和效果图…

怎么把照片里的水印去掉?这三个办法教给你

图片水印是指在图片上添加一些文字或图形&#xff0c;以标识该图片的来源或版权归属。它可以让人们更容易地辨认出图片的来源&#xff0c;从而增强品牌的辨识度。如果我们在网上看到很喜欢的照片&#xff0c;想要用来个人收藏或者当做背景图&#xff0c;而它的图片水印只是为了…

智能软件aaas系统的整体设计的内容构成和简单介绍---正文开篇 之 现实模型 -----计算机科学、认知科学及其他们的混血儿:计算机认知科学

在开始之前&#xff0c;首先需要说明一下&#xff1a;aaas的设计中大量借鉴了http://www.jfsowa.com/ 中的内容。只是为了软件智能的目的&#xff0c;整体结构、架构和工作机制不同。所借鉴的Jfsowa中的内容被拆散后分布于aaas系统的各个地方。这里一并说明&#xff0c;文档各处…

一、初识MVC的混血宠儿Struts2

Struts 2是一个MVC框架&#xff0c;吸收了Struts1和WebWork两者的精华&#xff0c;以WebWork设计思想为核心&#xff0c;吸收了Struts 1的部分优点&#xff0c;因此一举成为MVC框架领域的混血新宠儿。 一、这里提到了MVC&#xff0c;首先对MVC做一下介绍&#xff1a; 首先控制…

国内技术帝不输国外 CryEngine 3引擎下“混血编辑器”诠释究极画质

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 有一款游戏,它用真实且精美的画质征服了无数的玩家,在06年E3展上,它绽放了耀眼的光彩,…

混血手感的逆袭!B.FRIENDit GK6A类青轴机械式键盘!

这太像了啦......&#xff01;看来类青轴的机械式键盘应该也有可能也要掀起大战了&#xff0c;之前手感较好的多数都是POM导套设计系列&#xff0c;敲击起来就像是红轴手感&#xff0c;不过触底依然有一分或至少都有一丝弹弹的感觉。而类青轴最知名的应该就是雨林狼蛛&#xff…

DeepMind为明年的AAAI,准备了一份各种DQN的混血

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09; DeepMind公开了一篇最近投递到AAAI 2018的新论文&#xff0c;这篇论文的主角&#xff0c;依然是这家公司四年前就开始研究的DQN&#xff0c;配角&#xff0c;依然是雅达利&#xff08;Atari&#xff09;游戏。 DQN&#…

【剑指offer】高频ML/DL面试题

学习心得 &#xff08;1&#xff09;机器学习、深度学习、强化学习blabla很多内容都是面试的重点&#xff0c;本文结合菜鸡自身学习过程持续更新。 &#xff08;2&#xff09;如有不正确之处&#xff0c;恳请指正&#xff0c;共同学习&#xff0c;非常谢谢~ &#xff08;3&…

国内技术帝不输国外 CryEngine 3引擎下 混血编辑器 诠释究极画质

有一款游戏&#xff0c;它用真实且精美的画质征服了无数的玩家&#xff0c;在06年E3展上&#xff0c;它绽放了耀眼的光彩&#xff0c;拿下了当年几乎所有画面上的奖项。大家应该已经猜到了&#xff0c;它就是《孤岛危机》。 在《孤岛危机》发售后几年里&#xff0c;制作商Cryte…

Java+PHP整合=混血新宠儿

在2009年互联网上大谈各种系统技术架构&#xff0c;我们看见了很多国内、国外大型网站采用了其他语言和Java(Jee)结合的方式进行工作&#xff0c;其中由我们熟悉的有 手机之家 和 Digg 都是采用PHP和Java混合的方式进行协同工作。 我见过最佳的实践方式也是很多人经常体验过的…

[漫画]120430 混血男孩

混血男孩 introduce:最近&#xff0c;有些事情一直困扰着我…… url:http://manhua.178.com/zajiaosn/ tag:伪娘,路西法,废萌,卖肉 preview: 转载于:https://www.cnblogs.com/jffifa/archive/2012/04/30/2476849.html

好家伙!上天入地混血儿料箱机器人

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。 知识星球-智能仓储物流技术研习社 下个物流技术大咖就是你|原创12万字书等你领 智能仓储物流技术研习社 围绕厂内物流Intralogisitics&#xff0c;分享仓储物流自动化技术、设备、系统等知识&#x…

chatgpt:栅格化原理和代码

栅格化原理 把某个点根据经纬度放在整数经纬度记录的格子里&#xff0c;并把格子编号与点对应起来。 第一步确定每个格子的长和宽&#xff0c;即经度变化量和纬度变换量&#xff1a; 假设测试点的经纬度是(114度, 22.5度) 划定栅格划分的经纬度范围&#xff08;大范围&…

最强解释!Python 包的依赖管理,有解了!

来源丨网络 之前一直比较抵触用 Python &#xff0c;很大一部分原因是觉得 Python 项目的环境管理比较混乱。Node.js 有 Npm 包管理工具&#xff0c;通过 package.json 配置项目依赖&#xff0c;最多再通过 nvm 来进行环境切换&#xff1b;Java 有 Maven Gradle 来进行包管理和…