为什么我无法查看或打开从 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")
我已经使用以下代码下载了一张图片(实际上是使用 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")