我创建了一个显示来自显示器的图像的html表,现在图像几乎有800个,图像是用html显示的。
在此表单中:<a href="https://kc.kobotoolbox.org/attachment/original?media_file=bonushenricus/attachments/1631348129389.jpg"><img src="/home/bonushenricus/R/kobotoolbox/foto_kobotoolbox_ovature/thumb_1631348129389.jpg"alt="NA" height=80></a>
并使用DT包打开
this is a link to an example of the results (only first rows)
这意味着打开的页面大约有1 Gb的下载量,你对如何在表格中放置缩略图有什么建议吗?
我尝试使用rmdformat包,标题为rmarkdown,输出如下:
output:
rmdformats::html_docco:
thumbnails: true但它不适用于DT,rpubs不接受它
所以我现在正在尝试imager,我已经从stackoverflow中的一个问题中获取了这个函数
makeThumb <- function(file) {
library(imager)
im <- load.image(paste0("https://kc.kobotoolbox.org/attachment/original?media_file=bonushenricus/attachments/",file))
img <- resize(im,round(width(im)/10),round(height(im)/10))
save.image(img,paste0("thumb_",file))
}但我需要将所有图像直接加载到表中,然后为每个图像创建一个cimg类,我担心这会加载太多内存,或者我必须找到一种方法将缩略图上传到服务器并重新构建每张照片的html。
你有什么想法吗?
发布于 2021-09-17 16:25:50
好吧。我将一步一步地向您展示如何正确地执行此操作。不幸的是,我无法访问kc.kobotoolbox.org网站。因此,我对存储在本地文件夹中的文件执行了此操作。我建议你也这样做。
那么让我们开始吧。
library(fs)
library(imager)img目录中所有jpg文件的名称,将它们转换为一个列表。files = dir_ls("img", regexp = "\\.jpg$") %>% as.list()对我来说,files列表包含以下内容
$`img/img1 (1).jpg`
[1] "img/img1 (1).jpg"
$`img/img1 (2).jpg`
[1] "img/img1 (2).jpg"
$`img/img1 (3).jpg`
[1] "img/img1 (3).jpg"
$`img/img1 (4).jpg`
[1] "img/img1 (4).jpg"
$`img/img1 (5).jpg`
[1] "img/img1 (5).jpg"ResizeImg.ResizeImg = function(file, xscale = .1, yscale = .1){
if(file_exists(file)){
thumb_file = paste0(path_dir(file), "/", "thumb_", path_file(file))
if(file_exists(thumb_file)) file_delete(thumb_file)
im = file %>% load.image()
im %>% resize(round(width(im)*xscale),round(height(im)*yscale)) %>%
save.image(thumb_file)
}
}让我们来看看它是否有效
files[[1]] %>% ResizeImg(.25, .25)一切都很好,让我们使用我们的新函数
files %>% lapply(ResizeImg, xscale = .15, yscale = .15)一切都和预期的一样完美。
https://stackoverflow.com/questions/69204933
复制相似问题