Skip to content

Simple extension to easily maintain aspect ratio while changing dimensions. Install via the extensions tab on the AUTOMATIC1111 webui.

Notifications You must be signed in to change notification settings

thomasasfk/sd-webui-aspect-ratio-helper

Repository files navigation

Aspect Ratio Helper pytest

Simple extension to easily maintain aspect ratio while changing dimensions.

Install via the extensions tab on the AUTOMATIC1111 webui.

Features

(note this list is a little out of date, will need to find time to update it)

  • JavaScript aspect ratio controls
    • Adds a dropdown of configurable aspect ratios, to which the dimensions will auto-scale
    • When selected, you will only be able to modify the higher dimension
      • The smaller or equivalent dimension will scale accordingly
    • If "Lock/🔒" is selected, the aspect ratio of the current dimensions will be kept
    • If "Image/🖼️" is selected, the aspect ratio of the current image will be kept (img2img only)
    • If you click the "Swap/⇅" button, the current dimensions will swap
      • Configurable aspect ratios will also flip, reducing the need for duplication of config
chrome_wPYvl9oW1H.mp4

  • Scale to maximum dimension
    • Upon clicking, the width and height will scale according to the configured maximum value
    • Aspect ratio will be retained, the smaller or equivalent dimension will be scaled to match
  • Scale to aspect ratio
    • Upon clicking, the current dimensions will be scaled to the given aspect ratio, using the highest width or height
      • i.e 4:3 of 256x512 = 512x384 9:16 of 512x256 = 288x512 1:1 of 256x300 = 300x300
    • You can optionally toggle this to use the "Maximum dimension" slider value
      • i.e 4:3 of 512 = 512x384 9:16 of 512 = 288x512 1:1 of 300 = 300x300
  • Scale by percentage
    • Upon clicking, the current dimensions will be multiplied by the given percentage, with aspect ratio maintained
    • i.e -25% of 512x256 = 384x192 +50% of 512x512 = 768x768
      • You can also change the display of these if you find it more intuitive
      • i.e 75% of 512x256 = 384x192 150% of 512x512 = 768x768
      • i.e x0.75 of 512x256 = 384x192 x1.5 of 512x512 = 768x768

user-interface.png

Settings

  • Hide accordion by default (False)
  • Expand accordion by default (False)
    • Determines whether the 'Aspect Ratio Helper' accordion expands by default
  • UI Component order (MaxDimensionScaler, PredefinedAspectRatioButtons, PredefinedPercentageButtons)
    • Determines the order in which the UI components will render
  • Enable JavaScript aspect ratio controls
  • JavaScript aspect ratio buttons (1:1, 4:3, 16:9, 9:16, 21:9)
    • i.e 1:1, 4:3, 16:9, 9:16, 21:9 2:3, 1:5, 3:5
  • Show maximum dimension button (True)
  • Maximum dimension default (1024)
  • Show pre-defined aspect ratio buttons (True)
  • Use "Maximum dimension" for aspect ratio buttons (False)
  • Pre-defined aspect ratio buttons (1:1, 4:3, 16:9, 9:16, 21:9)
    • i.e 1:1, 4:3, 16:9, 9:16, 21:9 2:3, 1:5, 3:5
  • Show pre-defined percentage buttons (True)
  • Pre-defined percentage buttons (25, 50, 75, 125, 150, 175, 200)
    • i.e 25, 50, 75, 125, 150, 175, 200 50, 125, 300
  • Pre-defined percentage display format (Incremental/decremental percentage (-50%, +50%))
    • Incremental/decremental percentage (-50%, +50%)
    • Raw percentage (50%, 150%)
    • Multiplication (x0.5, x1.5)

settings.png

JavaScript & accordion aspect ratios might not play well together - I don't think many users will use both simultaneously, but we'll see.

Contributing

  • Open an issue for suggestions
  • Raise a pull request

Dependencies

Developed using existing AUTOMATIC1111 webui dependencies.

It's recommended to use the python version specified by A1111 webui.

However - for running unit tests, we use pytest.

pip install pytest

Testing

From the root of the repository.

pytest

About

Simple extension to easily maintain aspect ratio while changing dimensions. Install via the extensions tab on the AUTOMATIC1111 webui.

Topics

Resources

Stars

Watchers

Forks