2012-10-15 8 views
13

Tôi đang sử dụng gói png để tải PNG dưới dạng hình ảnh raster và sau đó vẽ chúng. PNGs đến từ một nguồn trực tuyến, cụ thể là, Wikipedia. Tôi có thể lấy sau đây để làm việc:Đang tải các tệp PNG trực tiếp từ URL

library(png) 

pngURL <- "http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Afghanistan.svg/150px-Flag_of_Afghanistan.svg.png" 

# Works: 
download.file(pngURL, "temp.png", mode = "wb") 
localPNG <- readPNG("temp.png") 
plot(1) 
rasterImage(localPNG, 0.8, 0.8, 1.2, 1.2) 

Tuy nhiên, thay vì sử dụng download.file() để lưu trữ các PNG tại địa phương, sau đó lại tải nó, nó sẽ là thích hợp hơn để nạp PNG trực tiếp từ URL. Tuy nhiên, điều này không làm việc:

# Does not work: 
internetPNG <- readPNG(pngURL) 

Như nó kết quả trong

Error in readPNG(pngURL) : 
    unable to open http://upload.wikimedia.org/wiki... 

Có ai có gợi ý về cách để có được điều này để làm việc, hay có những lý do đặc biệt mà R sẽ không tải PNG này từ một URL?

Xin cảm ơn trước.

+1

Bất cứ khi nào bạn nói "X không hoạt động" trong một câu hỏi, hãy cho chúng tôi biết thêm. Bạn có gặp lỗi hay không, trong trường hợp đó, hãy đăng nó vào các câu hỏi. Bạn không nhận được lỗi? Trong trường hợp nào bạn nghĩ X không hoạt động? – Spacedman

+0

Điểm tốt, @Spacedman. Đã chỉnh sửa bài đăng. – isDotR

Trả lời

15

Sử dụng getURLcontent trong gói RCurl.

library(RCurl) 
myurl <- "http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_Afghanistan.svg/150px-Flag_of_Afghanistan.svg.png" 
my_image <- readPNG(getURLContent(myurl)) 
+1

hoạt động cho tôi ... –

+1

Làm việc cho tôi cũng vậy. RCurl giải quyết rất nhiều vấn đề. Cảm ơn! – isDotR

+0

Tôi nên làm gì nếu tôi chỉ muốn tải xuống? –