Snap the region capture cross-hairs to the pixel corners of the region

  • 4
  • Idea
  • Updated 1 year ago
By FAR the biggest hassle I have had with SnagIt for the past 10 years is manually aligning the corners of a region capture with pixel colors/corners of the region I'm trying to capture.

Snagit lets me use the arrow keys for fine-positioning of the crosshairs in the magnifier while I have the mouse button held down, which helps a lot.

But I sure wish you would use some magic-wand-like intelligence in the area covered by the magnifier to automatically sense the corners and snap the crosshairs to the obvious square 90-degree pixel colors, to make it easier to click and drag a rectangular capture region. The magic wand sensing can do this for irregular lines, so why can't it be used to detect and snap to the obvious corners of rectangular images, windows, etc. that I'm trying to capture?

Maybe you could give me a left-hand hotkey like the spacebar to snap to successively smaller corner or capture areas, in case there is a 1 px gray boundary around the window I'm trying to capture.

There are probably millions of users doing zillions of region captures who would appreciate something like this.


Thanks
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes

Posted 1 year ago

  • 4
Photo of Juergen B

Juergen B

  • 2 Posts
  • 1 Reply Like
Great idea, there could be some visual contrast recognition algorithm or library...
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
PS. I probably wasn't clear in my suggestion about the space bar idea. If I was the developer UI guy, I would implement a cycling algorithm so that the first match would match the biggest capture area, type spacebar to move to the next smallest corner, spacebar to the next smallest corner, then spacebar again to cycle back to the largest corner. That way if I missed the first time around I wouldn't have to do anything special to start over.

It seems like a long shot, but having matched the top left corner, if they were my developers (I ran a software company for 25 years), I would ask them to see how hard it was to follow the selected corner/border around the edges to see if I could automatically detect the whole rectangle.  The fallback would be to move the mouse magnifier to the opposing corner and do a spacebar match on that corner.

Cheers
Photo of rene.morales

rene.morales

  • 28 Posts
  • 17 Reply Likes
I'm a smidge bummed that this is listed as an IDEA. I don't get to put the Me Too tag on this suggestion. This is a great idea and would be an incredible time-saver for me. I spend far too much time in 500% (or more) magnification trying to solve this problem myself.
Photo of Daniel Foster

Daniel Foster, Snagit strategy lead

  • 861 Posts
  • 192 Reply Likes
Pretty slick idea...thanks for sharing all the detail!

In what kinds of scenarios do you find yourself wanting this most? For me, doing pixel-by-pixel selection has largely been replaced by the Trim command. Here's a quick video I made to show that workflow: sloppy capture > Trim. Can you take a look and let me know whether this would accomplish the same outcome of excluding stray pixels from your capture?

I didn't show it in the video, but on Windows you can also include Trim as an "Effect" in a custom capture profile...so this could be automated even more (no need to apply trim by hitting a keyboard shortcut or toolbar button). 

I just want to make sure we fully understand the need.
Photo of Rick Stone

Rick Stone

  • 4481 Posts
  • 1997 Reply Likes
Hi Daniel - Appreciate the video. I had no idea that command was there. Went looking for it and didn't see it. Finally found it as "Auto Trim".

One way I could see it being enhanced would be to have an ability to specify a certain number of pixels that it would leave as sort of a border. Kind of like the way we can set the Tolerance when filling.

I still miss the little dialog that allowed us to trim individual edges. :(

Cheers... Rick :)
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Rene, sorry about posting it as an "idea"-- I didn't know any better. I was looking for "suggestion," but couldn't see anything equivalent. I'm sure the SnagIt guys can move the thread if they want to.

Dan, thanks for the short video on the AutoTrim feature. I've been using SnagIt for a decade at least and didn't know about that command. I see it's buried in the Customize Toolbar dialog, and (no edges here) I can only guess that it is not useful enough to make the cutoff to the main toolbar.

Your sentence about just wanting to understand the need was great because it tells us all what your goal is so we can contribute to it. In that spirit, here is some more info on my perspective of the need.

Experiences: I tried using AutoTrim on a variety of typical captures, where I'm trying to capture my normal "objects" on a screen. AutoTrim works fine when the object is on a uniform gray background but fails when the object is on any sort of a black or multi-colored background. I often try to capture charts and things when the background is somewhat messy. So AutoTrim, although useful (thank you for posting the video) is not aimed at what I see as the need.

It's worth saying that the result of AutoTrim is what I want (easier creation of rectangular captures), but AutoTrim is all or nothing (no cycling through possible matches) and gets confused by messy backgrounds.

The way I think, if the devs were mine (I've written 4000+ feature requests in my career, at least), I would ask them to make a corner-shaped mask or "brush" with a tolerance setting on it. Then march the mask down the magnifier area from top left to bottom right looking for a good horizontal or vertical match in the two arms of the corner mask. If they found a good horizontal match, then slide the mask left or right to see if a matching vertical edge could be found to complete the corner match.

Maybe a search would pick up the desired vertical edge, or maybe not. If it's the wrong one, maybe press F to search for the next vertical match on the right, or B to search for the next vertical match on the left. The idea here is to give the operator some left-hand keyboard means of cycling through various matches until the right corner is found. 

I emphasize that the match occurs on the two arms of the corner, not on any particular individual pixel (which I think magic-wand must do). I would remind my devs that I'm looking for corner-shaped matches, not individual pixel-contrast matches.

This algorithm seems like it would work because when it stopped on a match of a 10px black stripe from a messy background, I could press a key and it would skip over the black stripe to find the next matched straight line.

Hopefully, this helps. Cheers, Kevin
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Another thought--motivated by the AutoTrim experience (take a sloppy capture and click to fix it)--is to do all the cyclic corner-matching in the editor, and not during the capture action itself. Sloppy captures are in the right UI direction, in my view. The first UX aid is snapping to screen, app, and window boundaries that you can get from APIs. And it works very well during the capture operation.

But the second UX experience -- manually using the arrow keys to align corner captures -- is a huge drop off a cliff right now. No automated support at all. Tricky left-hand crosses over the keyboard to get the arrow keys under my fingers, keeping the mouse button pressed, etc.

AutoTrim addresses that UI experience by allowing sloppy captures (easy) and clicking the AT button (easy). If only it would do the right thing, and match the desired corners... :-) Brilliant when it works, but I only had a 20% (?) success rate with it.

I like the idea of sloppy captures and fixing them in the editor because then I'm not limited to the UX of crossing my left hand across the keyboard, manually lining up the crosshairs, holding the mouse down for a minute while I manually select two corners, etc.

Once in the editor, it's easy to imagine editing the picture using keybindings like in a text editor (or maybe photoshop?-I don't know much about keybindings there). I could use both hands to align crosshairs, move crosshairs left or right 1 "character" (pixel) at a time, expand or reduce the vertical or horizontal dimensions of the selection by a pixel or two, slide the selection left or right, invoke various smart functions, etc.

But my corner-matching idea seems like the best bang-per-buck to me for now, not knowing what capabilities or APIs you have under the hood.  

Good luck with it! I'm sure there are millions of captures going on that would benefit from something like this. Maybe you guys already collect keybinding stats from your user pool? I wonder what percent of captures use the arrow keys.
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Sorry to keep extending my post, but I'm just trying to help.

The way I think of it is that the software could spin through the pixels in the search region to find straight vertical or horizontal lines using various tolerance levels. Found lines could be represented by line objects.

Then the corner matching algorithm could walk the two lists of vertical and horizontal lines looking for intersections. That would give you a list of corners.

Next, a function could walk the list of corners with some "best corner" criteria such as longest arms (both reaching the edge of the search area), largest enclosed area (the outermost corner match), the thickest width of arms (the blackest, boldest line), and so on.

The operator could cycle through the final list of best corners by pressing the spacebar, for example.
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Keep in mind that the "edit the image like a text editor" model is very powerful for fixing up images in the editor. The sloppy capture pops up the editor. The corner crosshairs are enabled and visible a few pixels in from the corner (to allow inward or outward movement).

Imagine the "text" cursor was a set of crosshairs. Use your normal (user-definable!) text editor keybindings (or right-hand arrows, I suppose) to move the crosshairs to the desired corner, press Enter, and the crosshairs jump to the corresponding offset in the opposing corner. Move them, hit Enter, and the image is cropped without using the mouse. Or something like that--this sounds like a keyboard-driven crop procedure with an automated assist (jumping the crosshairs to the opposing corner when Enter is pressed on one corner).

Ideas, ideas...
Photo of Daniel Foster

Daniel Foster, Snagit strategy lead

  • 861 Posts
  • 192 Reply Likes
Thanks for all the rich ideation, Kevin. I don't want to go too deep into "solutioning" here but it sounds like the primary pain point you're raising is that it's currently too tedious to achieve a capture the edges of which precisely mirror the edges of a rectangular object within the capture.

From an engineering and UX standpoint, I'm sure there are a lot of considerations in terms of what information the OS or browsers make available to a desktop client, how performant a given solution could be, and how any given workflow would test with users. But I'll bring this thread to the attention of the product team for consideration!
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Yes, I guess your phrase captures it -- "The primary pain point is that it's currently too tedious to achieve a capture of a rectangular object within the capture." Hmm... but isn't that "too tedious" operation the primary purpose of SnagIt? (smiling) 

I hope your team does something with the idea. I imagine there are many millions of captures of rectangular areas taken by users who all tediously (to use your word) click and hold the mouse, try to tweak the mouse movement to get the crosshairs close, reach across the keyboard with their left hand, align their left fingers visually with the arrow keys, press the keys to align the crosshairs with the corner of the region, (all while not moving the mouse hand 1 pixel), then drag to the opposing corner, and repeat the whole process again without moving the mouse hand... I'm sure you get the idea.

I loved your phrase "a sloppy capture" above. Doesn't that say it all? A sloppy capture is fast, graceful, and easy compared to the tedious accurate capture.

Anyhow, I've said my piece, so it's in your hands. Best regards, Kevin
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
I can even imagine a loop that attempts to reuse the existing AutoTrim recognition code. Loop 10 or 20 times, starting at the outside of the sloppy capture and shrink the starting point on each loop. That way one of the attempts is likely to match the desired rectangular object. Kind of a guess, crop down the starting point, guess, crop down the starting point, and so on. Tapping spacebar would loop through the recorded (and "valid") AutoTrim attempts. This approach seems like it would easily get past black stripes and messy backgrounds outside of nice borders on rectangular objects. (Or so it seems to me.)
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Still thinking. Following the previous paragraph idea of reusing AutoTrim functionality, I end up in a place where I imagine doing a sloppy capture, then repeatedly clicking the AutoTrim button to cycle through successively smaller or different AutoTrim starting points until it gives me the crop that I seek. 

Do the first trim, then on a second click move the left boundary (do a virtual crop) in by N pixels. Do a second AutoTrim operation; on a third click restore the left boundary and move the top boundary down N pixels and try another AutoTrim; on a fourth click move both boundaries in and do an AutoTrim. 

This approach would hardly change the UI at all (only multiple clicks on an existing button), would not change the UX at all on the first click, but would add the extra UX functionality with repeated clicks. It would reuse all the existing AutoTrim code and cropping code, and would only require some glue code to walk the AutoTrim starting boundaries inward on successive clicks. The "walking inward" code wouldn't even have to be bright or complex--just walk in 10 or 20 pixels, do an AutoTrim operation, and see if the user likes it. If not, take another step inward.
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
Funny -- just for fun I tried clicking AutoTrim repeatedly, and it already has some of the behavior above. If it detects an additional piece that can be cropped off (algorithm unknown), it will trim off the additional piece to get a more desirable edge.

But it gets stuck on some edges. In that case, if I manually crop off a few pixels on that side, the next AutoTrim operation sometimes gets the rest.

I surmise that the algorithm I described above is already partially implemented. Just give the AT code the ability to do the little cropping operation itself, and cycle through the possible results, and you're there.
Photo of Daniel Foster

Daniel Foster, Snagit strategy lead

  • 861 Posts
  • 192 Reply Likes
Hi Kevin - thanks for all the continued brainstorming...I can tell you're very passionate about this feature! :) 

Another option I should have suggested from the outset is Snagit's object capture capability (available on the Windows version for some time; has not made it to Mac yet). It detects objects on the page or in the application being captured, at time of capture, and snaps the capture area to the edges of the object.

The limiting factor here is what information about its structure that the browser or other application will "give up" to Snagit. For example, Chrome and Edge no longer provide the information about a webpage's structure to an app like Snagit, so object capture does not work at all in Chrome or Edge. But Internet Explorer and Firefox do give up that information, as do many desktop applications along with the OS itself. 

Here's a GIF showing how object capture works: http://www.screencast.com/t/0kN7BnQkljsS 
(Edited)
Photo of Kevin

Kevin

  • 17 Posts
  • 4 Reply Likes
You're welcome. I was surprised that the algorithm was partially implemented already with repeated clicks of the AutoTrim button. Here's hoping that something will come of it. Millions of captures are waiting for you! :-)