首页 > 解决方案 > 为什么我无法从 URL 查看或打开下载的 PNG 文件

问题描述

我已经使用下面的代码下载了一个图像(实际上是几个使用 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、Paint 等打开下载的图像,我会收到类似的消息,例如不支持格式、无法加载照片等消息。但是,请注意,如果我只是在浏览器中复制并粘贴图像 url,图像会完美地显示在网页中。

感谢您对这里可以做的事情的投入。

标签: rpng

解决方案


看起来你必须设置mode = "wb"download.file手册说:

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

在 Windows 上,如果未提供 'mode' ('missing()') 并且 'url' 以 '.gz'、'.bz2'、'.xz'、'.tgz'、'.zip' 之一结尾, '.jar', '.rda', '.rds' 或 '.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")

推荐阅读