Using packer.nvim:
use {'edluffy/hologram.nvim'}
Using vim-plug:
Plug 'edluffy/hologram.nvim'
Hologram.nvim allows you to view inline images directly inside a Neovim buffer. Requires the following setup in init.lua:
require('hologram').setup{
    auto_display = true -- WIP automatic markdown image display, may be prone to breaking
}
There are plans for parts of Hologram to be able to be used in other plugins, such as its image functionality.
image.luaMinimal example - save as a file (e.g. minimal.lua) then run with :luafile %:
local source = '/Users/.../Documents/my-image.png'
local buf = vim.api.nvim_get_current_buf()
local image = require('hologram.image'):new(source, {})
-- Image should appear below this line, then disappear after 5 seconds
image:display(5, 0, buf, {})
vim.defer_fn(function()
    image:delete(0, {free = true})
end, 5000)
Image:new(source, keys)Creates a new image object and sends image data with transmission keys to terminal.
Image:new(source, {
    format = 100, -- format in which image data is sent
    transmission_type = 'f', -- transmission medium used
    data_width = nil, -- px. width of image
    data_height = nil, -- px. height of image
    data_size = nil, -- size of data to read from file
    data_offset = nil, -- offset from which to read file data
    image_number = nil, -- image number
    compressed = nil, -- whether data is compressed or not
    image_id = nil, -- image id
    placement_id = 1, -- placement id
})
For more details see https://sw.kovidgoyal.net/kitty/graphics-protocol/#control-data-reference
Image:display(row, col, buf, keys)Every image can be displayed an arbitrary number of times on the screen, with different adjustments applied. These operations do not require the re-transmission of image data and are as a result very fast and lightweight. There should be no flicker or delay after an adjustment is made.
Image:display(row, col, buf, {
    x_offset = nil, -- left edge of image area to start displaying from (px.)
    y_offset = nil, -- top edge of image area to start displaying from (px.)
    width = nil, -- width of image area to display
    height = nil, -- height of image area to display
    cell_x = nil, -- x-offset within first cell to start displaying from (px.)
    cell_y = nil, -- y-offset within first cell to start displaying from (px.)
    cols = nil, -- number of columns to display over
    rows = nil, -- number of rows to display over
    z_index = 0, -- vertical stacking order of image
    placement_id = 1, -- placement id
})
Image:delete(buf, opts)Deletes the image located in buf.
Image:delete(id, {
    free = false -- when deleting image, free stored image data and also extmark of image. (default: false)
})
Core functionality:
Extensions:
Misc: