【发布时间】:2020-11-27 19:42:16
【问题描述】:
由于我不想进入这里的原因,我需要在使用此标签加载时动态调整来自用户手机的图像(并且是愚蠢的大)的大小
image_tag thumbnail_document_path(document.id), alt: "#{document.document_title}", class: "document-thumbnail"
这会调用缩略图控制器操作
def thumbnail
document = Document.find params[:id]
image_meta = document.image_details.first
image = Document.get_image_for_display image_meta
send_data image, type: "image/jpg", disposition: "inline"
end
Document.get_image_for_display 从数据库中提取 blob,检查我们单独保存的元数据,看看它是需要转换为图像的 PDF 还是需要调整大小的大图像,然后执行所有操作并异步发送斑点。这适用于除 iOS 之外的所有设备。在 iOS Safari 和 Chrome 上,如果您同时以这种方式加载多个图像this happens。如果有人对此有解释或解决方案,我很乐意听到!
编辑:此应用程序与 C++ 桌面应用程序共享服务器和数据库,并且不能(也不能)访问服务器上存储这些文件的位置,并且在数百个客户端中存在数十万个文件服务器,因此由于物理存储限制,将调整大小的版本存储在完整大小的旁边是不可能的。仅在尝试转换和加载超过 3 张大图像时才会出现此问题,然后只有第一张图像仍然损坏,其他图像将完全加载,尽管它们需要一段时间才能完成。
【问题讨论】:
-
仅供参考,我尝试在图像加载完成后使用 javascript 强制重绘,但仍未修复
-
“异步发送 blob”是什么意思?您在控制器操作中使用它,我不明白这怎么可能是异步的。
-
抱歉,非阻塞可能是更好的描述。控制器操作的其余部分运行,页面的其余部分在图像缩放时加载。
标签: ios ruby-on-rails ruby