I kept reaching for the same effect without a quick way to make it: a word cut into square blocks, wrapped tight around a subject, some letters in front and some tucked behind. Pixel Frame is the tool I built to do it, in the browser, for free.
The dog at the top is Ramos. I dropped his photo in, typed his name, and the blocks fell around him in blue, spelling RAMOS over and over, one letter to a block. The speckled background is a layer I set behind the exported image; the cut-out and the blocks came straight out of the tool.
Underneath, it is a few steps. The tool cuts the subject away from its background, by its own transparency if the file has any, or by flood-filling the white around it for a photo on a plain backdrop. Then it lays a grid over the silhouette, keeps the cells the edge passes through, and walks them in order around the shape. Your text drops into that ring of cells, one character per block, and each block can tuck behind the subject or sit on top of it.
The blocks used to hug the edge and nothing else. New in this version is a Distance control: turn it up and the canvas grows a clear margin, so the ring lifts off the silhouette and orbits at the gap you set.

That comparison is one grey blob run through twice: Distance at zero on the left, where the blocks hug the edge and a couple duck behind it, and sixty on the right, where the whole ring clears the shape.
You can try it on your own image in Pixel Frame . It exports PNG and SVG, and in the SVG the blocks and letters stay real vector shapes; everything runs in your browser, so nothing you drop in leaves your machine. The Ramos render comes from a small seeded script in this site's repo, so it lands on the same blocks every time I run it.