2017-10-17 8 views
0

私は、ディスクから読み込むのではなく、自動的にメモリに生成されるpngイメージを持っています。私はもちろん最初にディスクに保存することができますが、私はむしろそれをやりません。そのイメージをggplot2プロットのどこかに表示したいのですが、それを行うための適切なパッケージ/関数を見つけることができません。メモリPNGイメージをプロットに追加するには?

私が記憶している画像は、

x <- "data:image/png;base64,..." 

UPDATE現実的なユースケース、および私が取得エラー回答#1

library(qrencoder) 
x <- qrencode_png("http://rud.is/b") 
x 
[1] "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAAAAACMfPpKAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAfElEQVQYlU2QWwrEMAwDR0vuf+XZj8qJSyjIyNYjAkAMQNFhkBCKzoNiin70kxKBN41ENuf7+9AZWQOGRx/2m4TeKy2YO0GyDpwszW5EUCs/ur78NZtGvSa8azdPDGttsonot8LtDFNnrs4yLSbuJk0ajnV3vevhCxUj4Q+R11n764g4WgAAAABJRU5ErkJggg==" 
myImage <- png::readPNG(x) 
    > Error in png::readPNG(x) : 
    > unable to open  
    > data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAAAAACMfPpKAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAfElEQVQYlU2QWwrEMAwDR0vuf+XZj8qJSyjIyNYjAkAMQNFhkBCKzoNiin70kxKBN41ENuf7+9AZWQOGRx/2m4TeKy2YO0GyDpwszW5EUCs/ur78NZtGvSa8azdPDGttsonot8LtDFNnrs4yLSbuJk0ajnV3vevhCxUj4Q+R11n764g4WgAAAABJRU5ErkJggg== 

を使用しようとしているときに、私は次のようにも試してみましたが、私は別のエラーを取得:

qrGrob <- grid::gTree(children=gList(grid::rasterGrob(x))) 

または

qrGrob <- grid::gTree(children=gList(grid::rasterGrob(x))) 
+0

「magick」パッケージを見てください。 ggplotオブジェクトをレンダリングし、その上にメモリ内のpngイメージを作成できるデバイスが追加されました。 – hrbrmstr

+0

@hrbrmstrご意見ありがとうございます。私は 'magick'パッケージをチェックアウトしましたが、私のOPユースケースをカバーする明確な方法は見つけられませんでした。そこには、パラメータとしてイメージを取る多くの機能がありますが、独自のAPIを使用して読み取られたものだけがあります。 –

答えて

0

できます

  • は空白ggplot2 GEOM

コードを使用して画像

  • プロットをレンダリングベクトル
  • から画像を読みますメモリからPNGをロードする方法が見つかりません。しかし、この他の方法は、ラスターバージョンを使用して完全に動作します。

    library(ggplot2) 
    library(raster) 
    library(qrencoder) 
    library(grid) 
    qrGrob <- grid::rasterGrob(raster::as.raster(
           qrencoder::qrencode_raster("http://rud.is/b"), 
           maxpixels=.Machine$integer.max,col=c("white", "black")), 
           interpolate=FALSE)  
    ggplot() + geom_blank() + annotation_custom(qrGrob,0,1,0,1) 
    
  • 2

    これはうまくいくかもしれない:私は

    myImage <- png::readPNG(x) 
    myImage <- grid::rasterGrob(myImage, interpolate = TRUE) 
    library(ggplot2) 
    ggplot() + 
        geom_blank() + 
        annotation_custom(myImage, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) 
    
    +0

    ありがとう!残念ながら私はアップデートにエラーが表示されます: 'データを開くことができません:image/png; base64' –

    関連する問題