Large images gets cropped when downscaled in VSE
Open, Needs TriagePublic

Description

System Information
Linux. Nvidia GForce GTX580

Blender Version
Broken: 2.79.
Worked: (optional)

Short description of error
Large images added in VSE gets scaled to render size.
If we want to keep aspect ratio we need to tick Image Offset. The image is now displayed at its original aspect and size.
We want to downscale this to reasonably fit the window so we add a Transform Effect strip.
Downscaling the image now gets cropped to the area that is inside the render area.
Effectively we can't use large images, say a logo or an image we want to do a Ken Burns effect on, in the VSE.
See attacked .blend

Exact steps for others to reproduce the error
Set VSE render to 1920x1080
Import large image (like 2500x2500px).
Image gets squashed to render dimensions
Tick Image Offset in Strip Input. Image scales to original size and aspect ration.
Add Transform strip.
Scale to 0.5
See image cropped when downscaled.

Details

Type
Bug

Behavior described by David Rylander has been present for a long time, and I don’t think that it is an error. Here’s a way that I recently found to handle:

  1. Do not tick the Offset-Image button in the Image-Strip properties.
  2. Add the Transform strip for the Image Strip.
  3. In the Transform-Strip properties, create a Driver for X-scale, to be driven by the Y-scale value, and
  4. Adjust its Scripted-Expression of this X-scale driver to be the original ratio of the original image. (note: find original dimensions of image in the Image-Strip properties).

in David Rylander's example, the 2500X2500 image has a 1:1 ratio, so the driver expression 'var *(2500/2500)' will always keep the X-Scale at 1:1 with the driver Y-Scale value ('var'). Any change in the Y-scale value will update the X-scale value, so animating changes in the Y-scale value will animate properly proportioned zooming in and out of the image.

Just happened to be working on possibly making a tutorial for this - but didn’t know if anyone else thought of this.

Looking back over my notes, I can see that number 4 is probably not quite right. different video formats can use different aspect ratios for their final display. So, someone with a better handle on the math can correct me on the proper ratio(s).

Still, using a driver is a nice way to keep both X and Y scaling 'in step' when you want to zoom in and out on an image. I don't know how this 'trick' affects the render time, though.

I agree that it is not a bug.

However handling the scale in this way only creates an image that "fits" the cropped image when zoomed to 1:1 pixel size. Most people want to scale an image to taste (keeping correct aspect, you cannot do this in the VSE as it normalizes all inputs to project dimensions, loosing resolution. You would correct aspect when small and zoom in resulting in a blurry image. Alternative is to use Movie clip and stabilize function or the compositor in another scene or a 3D view from another scene.

david mcsween is correct. In my tests with Blender 2.79, a large images' resolution is diminished when they are reduced to fit into a project's available 'buffer space' (my terminology). So, the next best thing that I can think of is to increase the project's buffer space (temporarily?). David Rylander's original example was an image that 2500x2500px, clearly larger than the 1920x1080 screen. Maybe he can try this:

  1. Go to the Properties Editor Window, Render tab, and find the Dimensions sub-section to see the project's screen dimensions.
  2. If the final shot requires a zoom-in to close-up view of the original image, try to increase the Resolution percentage as much as possible (I was able to get my Mac version of Blender to go up to at least 1000%). Anything greater than the dimensions of the over-sized image is a good place to start.
  3. Render the image-zooming strip sequence at the highest resolution that you dare.
  4. When you re-import the high-definition version of the animated zoom sequence back into your project (set to normal resolution of 100%), the project will be reduced down, to fit into the regular dimension size (without 'Offset image' radio button active). Aspect ratio has not been altered between the high and regular resolution versions of the project. Any resolution loss, at this point, will not be due 'throwing away' pixel information that was in the original, oversized, image.

Yes, as david mcsween points out, this is like re-processing the video (or image) in another scene. Maybe all strips requiring this treatment can be lined up, end to end, and be converted in one big, painfully long, rendering session.

Hi folks, you might find this interesting. It's from a while ago so probably doesn't compile with current blender source...

https://developer.blender.org/D2506