为什么我无法查看或打开从 URL 下载的 PNG 文件

Why can't I view or open downloaded PNG file from URL

我已经使用以下代码下载了一张图片(实际上是使用 for 循环的几张图片)。然而,这些图像并没有打开,尽管它们似乎已经完全下载了。事实上,这些图像无法在普通的照片编辑器或画图等工具中打开。感谢输入和应该做什么..

下面是我尝试使用 for 循环的代码:

p <- c("http://assets.pokemon.com/assets/cms2/img/pokedex/full/001.png",
       "http://assets.pokemon.com/assets/cms2/img/pokedex/full/002.png",
       "http://assets.pokemon.com/assets/cms2/img/pokedex/full/003.png",
       "http://assets.pokemon.com/assets/cms2/img/pokedex/full/003_f2.png",
       "http://assets.pokemon.com/assets/cms2/img/pokedex/full/004.png")
p

for (url in p)
  download.file(url, destfile=file.path("C:/Users/xyz/Desktop/test",basename(url)))

library(imager)
# loading only first image for viewing
i <- load.image("C:/Users/xyz/Desktop/test/001.png")
plot(i)

然后我只下载了一个提供简单目标名称的文件,并尝试使用以下代码加载和显示。

download.file("http://assets.pokemon.com/assets/cms2/img/pokedex/full/001.png", 
              destfile=file.path("C:/Users/xyz/Desktop/test","first_img.png"))

i_s <- load.image("C:/Users/xyz/Desktop/test/first_img.png")
plot(i_s)

在这两种情况下,我都收到以下错误消息。

Error in read.bitmap(file) : 
  File f: C:/Users/xyz/Desktop/test/001.png does not appear to be a PNG, BMP, JPEG, or TIFF

同样,如果我尝试使用照片、照片编辑器、Adobe、画图等打开下载的图像,我会收到类似的消息,例如格式不受支持、无法加载照片等消息。但是,请注意,如果我只是简单地复制并粘贴图像 url 在浏览器中,图像会完美地显示在网页中。

感谢您提供有关此处可执行的操作的意见。

看来您必须在 download.file 中设置 mode = "wb"。手册说:

二进制传输的选择('mode = "wb"' 或 '"ab"')在 Windows 上很重要,因为与 Unix-alikes 不同,它确实区分文本和二进制文件和文本传输将“\n”行结尾更改为“\r\n”(又名“CRLF”)。

在 Windows 上,如果未提供“mode”(“missing()”)并且“url”以“.gz”、“. bz2', '.xz', '.tgz', '.zip', '.jar', '.rda', '.rds' or '.RData', 'mode = "wb"' 被设置为二进制传输是为了帮助粗心的用户。

所以对于单个文件尝试:

download.file("http://assets.pokemon.com/assets/cms2/img/pokedex/full/001.png", 
              destfile=file.path("C:/Users/vsvas/Desktop/test","first_img.png"),
              mode = "wb")