Giter Site home page Giter Site logo

waifu2x-ncnn-vulkan-gui's Introduction

Hi, I'm Jack, a copywriter and programmer from England.

You can look at my writing portfolio and coding projects on my personal website.

waifu2x-ncnn-vulkan-gui's People

Contributors

jkendall327 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

waifu2x-ncnn-vulkan-gui's Issues

Dropdown lengths

Model dropdown should be 2x as long as it is
Scale and Denoise dropdowns should be 0.5x as long as they are

Please Add a description whats needed for compilation

Hi!
i wanted to ask, if it is possible that you can add an "Compiling" Entry in the readme, so that people who never used .Net know how to compile it ourself.
Or, if there would be rpm packages for ease of use.

shift key

the name of the repo has capital letters, and it's not aesthetic. pls remove.

Default font family name can't be null or empty.

info: Waifu2x_UI.Core.Commands.CommandRunner[0]
Loaded Waifu2x executable from /usr/share/Waifu2x-UI.Avalonia/waifu2x/waifu2x-ncnn-vulkan
info: Waifu2xUI.Avalonia.ViewModels.MainWindowViewModel[0]
App started
info: Waifu2xUI.Avalonia.ViewModels.MainWindowViewModel[0]
Loaded 3 upscaling models from /usr/share/Waifu2x-UI.Avalonia/waifu2x
Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.
at Avalonia.Media.FontManager..ctor(IFontManagerImpl platformImpl) in //src/Avalonia.Visuals/Media/FontManager.cs:line 28
at Avalonia.Media.FontManager.get_Current() in /
/src/Avalonia.Visuals/Media/FontManager.cs:line 48
at Avalonia.Media.TextFormatting.TextCharacters.TryGetRunProperties(ReadOnlySlice1 text, Typeface typeface, Typeface defaultTypeface, Int32& count) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 129 at Avalonia.Media.TextFormatting.TextCharacters.CreateShapeableRun(ReadOnlySlice1 text, TextRunProperties defaultProperties) in //src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 62
at Avalonia.Media.TextFormatting.TextCharacters.GetShapeableCharacters() in /
/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 40
at Avalonia.Media.TextFormatting.TextFormatterImpl.FetchTextRuns(ITextSource textSource, Int32 firstTextSourceIndex, TextLineBreak previousLineBreak, TextLineBreak& nextLineBreak) in //src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs:line 280
at Avalonia.Media.TextFormatting.TextFormatterImpl.FormatLine(ITextSource textSource, Int32 firstTextSourceIndex, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak) in /
/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs:line 15
at Avalonia.Media.TextFormatting.TextLayout.UpdateLayout() in //src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs:line 223
at Avalonia.Media.TextFormatting.TextLayout..ctor(String text, Typeface typeface, Double fontSize, IBrush foreground, TextAlignment textAlignment, TextWrapping textWrapping, TextTrimming textTrimming, TextDecorationCollection textDecorations, Double maxWidth, Double maxHeight, Double lineHeight, Int32 maxLines, IReadOnlyList`1 textStyleOverrides) in /
/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs:line 71
at Avalonia.Controls.TextBlock.CreateTextLayout(Size constraint, String text) in //src/Avalonia.Controls/TextBlock.cs:line 475
at Avalonia.Controls.TextBlock.get_TextLayout() in /
/src/Avalonia.Controls/TextBlock.cs:line 166
at Avalonia.Controls.TextBlock.MeasureOverride(Size availableSize) in //src/Avalonia.Controls/TextBlock.cs:line 521
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /
/src/Avalonia.Layout/LayoutHelper.cs:line 46
at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in //src/Avalonia.Layout/LayoutHelper.cs:line 39
at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize) in /
/src/Avalonia.Controls/Presenters/ContentPresenter.cs:line 366
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 625
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV) in /
/src/Avalonia.Controls/Grid.cs:line 1150
at Avalonia.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged) in //src/Avalonia.Controls/Grid.cs:line 1005
at Avalonia.Controls.Grid.MeasureOverride(Size constraint) in /
/src/Avalonia.Controls/Grid.cs:line 448
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in //src/Avalonia.Layout/LayoutHelper.cs:line 46
at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in /
/src/Avalonia.Layout/LayoutHelper.cs:line 39
at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize) in //src/Avalonia.Controls/Presenters/ContentPresenter.cs:line 366
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /
/src/Avalonia.Layout/LayoutHelper.cs:line 46
at Avalonia.Controls.Primitives.VisualLayerManager.MeasureOverride(Size availableSize) in //src/Avalonia.Controls/Primitives/VisualLayerManager.cs:line 133
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 625
at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 559
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in //src/Avalonia.Layout/Layoutable.cs:line 625
at Avalonia.Controls.Window.MeasureOverride(Size availableSize) in /
/src/Avalonia.Controls/Window.cs:line 888
at Avalonia.Controls.WindowBase.MeasureCore(Size availableSize) in //src/Avalonia.Controls/WindowBase.cs:line 237
at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /
/src/Avalonia.Layout/Layoutable.cs:line 364
at Avalonia.Layout.LayoutManager.Measure(ILayoutable control) in //src/Avalonia.Layout/LayoutManager.cs:line 287
at Avalonia.Layout.LayoutManager.ExecuteInitialLayoutPass() in /
/src/Avalonia.Layout/LayoutManager.cs:line 174
at Avalonia.Controls.Window.ShowCore(Window parent) in //src/Avalonia.Controls/Window.cs:line 688
at Avalonia.Controls.Window.Show() in /
/src/Avalonia.Controls/Window.cs:line 626
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 125
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /
/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 175
at Waifu2xUI.Avalonia.Program.Main(String[] args) in /home/jackkendall/source/Waifu2x-UI/Waifu2x-UI.Avalonia/Program.cs:line 13

Design notes

my initial notes:

  1. lose the "select your executable", have it look for waifu2x-nccn-vulkan in a subfolder adjacent to the executable called waifu2x. this isn't something the user should be putting in
  2. make the input selector able to select files or folders - and have the gui figure out which was input. if a folder, it's a batch operation
  3. have the output selector be two parts: a directory selector, and a suffix textbox. when the input source is selected, take the directory from it and autopopulate the output directory. default the suffix selector to "-upscaled". the output filename(s) are the input filenames plus the suffix

additional things:

  1. a pair of radio buttons for PNG/JPG - default to png. this should both change the extension of -o and be passed to -f
  2. a dropdown box for which model to use, autopopulated on launch from the available models in the waifu2x subfolder (where a model is defined as a subfolder that contains a "scale2.0x_model.bin" file, take the subfolder name and add it to the dropdown)
  3. dropdowns for denoise level (0, 1, 2, 3) and scale factor (2, 4, 8, 16)
  4. checkbox for TTA mode, defaults off

upon clicking "launch" and starting the process, the values of 1-4 should be saved to a file for reloading, so the user's prefs persist. we don't want to persist the TTA checkbox because it's rarely needed and hugely slows things down, so forcing it to be case-by-case is ideal.

verbose should also be the default, we're never not gonna want it
"batch processing" will of course just be the gui running the command multiple times :PepeHands:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.