Создать изображение и показать его на html-странице без записи на диск - PullRequest
0 голосов
/ 30 сентября 2010

В моем проекте в Ruby On Rails (но это не важно), когда я загружаю html-страницу, мне нужно расшифровать изображение (jpg) и показать его на веб-странице: после запроса страницы изображениерасшифровывается и файл записывается на диск сервера, поэтому браузер может показать изображение.

Я не хочу записывать изображение на сервер, но хочу зашифроватьизображение на лету !

Я думаю, что ajax (jquery) может быть полезным, но я не знаю, как использовать его для изображения на лету (без записи изображения надиск).

У вас есть идея?

спасибо, Алессандро

Ответы [ 2 ]

2 голосов
/ 30 сентября 2010

Вы можете использовать send_data вместо рендеринга страницы.Взгляните здесь .При этом вы можете сгенерировать свой файл и отправить его без сохранения на диск.Однако нормальная страница не будет отображаться.Но вы можете использовать его следующим образом:

1.Создайте нормальное представление HTML, например, для действия с индексом:

# controller
def index
  @some_resources = SomeResources.all # just whatever you need
end

# somewhere in index.html.erb view
<img src="rendered_images/my_rendered_image.jpg" />

2.Добавьте маршрут для rendered_images

# routes
match "rendered_images/:filename" => "application#render_image"

3.Добавить действие рендеринга изображения в контроллере приложения

# application controller
def render_image
  send_data my_function_to_generate_file, :filename => params[:filename], :type => 'image/jpeg', :disposition => :inline
end

Я не проверял его.Я надеюсь, что это даст вам кое-что для начала!

2 голосов
/ 30 сентября 2010

Единственный способ сделать это - схема URI данных .

Позволяет встраивать данные изображения непосредственно как свойство src элемента <img>.

Однако у него есть свои ограничения: он не работает вообще в IE <8 и имеет ограничение размера 32 КБ в IE 8. </p>

...