Jump to content

olavrb

Members
  • Posts

    27
  • Joined

  • Last visited

Posts posted by olavrb

  1. As a non-competent user I'd like to be able to open images in Paint.NET without colors looking funky by default.

     

    Thus I'd like Paint.NET to use the embedded ICC profile by default, either by:

    • Load using ICC profile by default, or
    • Prompt user to load image with the embedded ICC profile Paint.NET automatically detected.

     

    ---

     

    Original title: "PDN messes up colors on XYB JPG created by JPEG XL "jpegli", Windows Photos doesn't"

    Original content:

     

    After reading about JPEG XL "jpegli" I had to test it.

     

    Binaries can be found here:

    Test image was taken from here:

    Which I decoded to PNG using GIMP (opened in GIMP, chose to export to PNG).

     

    I then used following command to generate XYB JPG:

    cjpegli.exe .\in.png .\out-xyb.jpg --quality=90 --xyb --chroma_subsampling=444

    And following for a non-XYB JPG:

    cjpegli.exe .\in.png .\out.jpg --quality=90 --chroma_subsampling=444

     

    I then noticed that opening the XYB JPG file in Paint.NET messes up colors, while the Windows Photos app seems to handle it well.

    image.thumb.png.c9b06df6659ab352b35dc7d8bdcfa02e.png

    I don't know enough to tell what causes this. Color space? ICC? But if the Windows Photos app handles it, so should Paint.NET, ideally. :)

     

    Sample files (in.png, out.jpg, out-xyb.jpg) can be downloaded here (around 20MB):

  2. Feature request: Ability to select a different install directory. I sync Paint.NET App Files with OneDrive and use the registry keys for "Custom Plugin/Shapes Folders" ( https://www.getpaint.net/doc/latest/InstallPlugins.html ).

     

    Issue, or at least maybe something that can be made faster and more intuitive: Why loop through all the plugins at install when only a few are actually selected for install? It looks like the installer (v6.5) installs all the plugins (but it doesn't actually do that), even though I only selected one of them. So, misleading GUI IMO, and slow.

    • Shouldn't the "Install selected" action detect enabled checkboxes and only loop through those?

     

    Also, the two errors when starting the installer when using the Microsoft Store version of Paint.NET could maybe be removed?

    Either try to detect whether Paint.NET is installed. PowerShell example: 

    [bool]$(Try{$null = Get-AppxPackage -Name 'dotPDNLLC.paint.net' -ErrorAction 'SilentlyContinue'; $?}Catch{$false})

    Or present a popup at startup "Regular installer or Microsoft Store"?

  3. On 8/25/2021 at 12:49 AM, Rick Brewster said:

    Can you tell me some more about your scenario? e.g. In what context are you using Intune for?

     

    Sorry for the very late reply. We're using Intune/ Endpoint Manager for the company I work at. There we publish apps in the Microsoft "Company Portal", so users without admin permissions (which should be all) can install optional software. One of those softwares in Paint.NET.

     

    Here, Microsoft Store (for business) is not feasible, as:

     

    The way we package apps is described in the first post.

     

    Why add totally silent EXE installer switch?

    • Less manual steps to deploy new versions to Intune, as we don't need to /createmsi first
    • Would also make it easier to create logic for "auto updates" with some PowerShell.
      • I'd prefer Microsoft Store version for this, but as mentioned, but how licenses in Microsoft Store for Business works is not feasible for us.

     

    BTW, I found that NSIS installer has a case sensitive switch "/S". This hides the first dialog, but after extraction Paint.NET dialogue appears. I've only tried this from user as admin context, will try to see what happens if deploying in SYSTEM context from Intune. Maybe it's not shown to the end user.

  4. 2 minutes ago, Rick Brewster said:

     

    No; it needs to be a string (REG_SZ) whose value is "true" (without the quotes)

     

    Ahh. That did it. Sweet. Thank you. :) 

    Capture.PNG

     

    Corrected PowerShell if anyone is interested.

     

    Spoiler
    #Requires -RunAsAdministrator
    #Requires -Version 5.1
    <#
        .SYNOPSIS
            Sets additional plugin directories for Paint.NET
    
        .NOTES
            Author:   Olav Rønnestad Birkeland
            Created:  210923
            Modified: 210923
    
        .EXAMPLE
            & $psISE.'CurrentFile'.'FullPath'
    #>
    
    
    # Input parameters
    [OutputType($null)]
    Param()
    
    
    # PowerShell preferences
    $ErrorActionPreference = 'Stop'
    $InformationPreference = 'Continue'
    
    
    # Assets
    $RegistryValues = [ordered]@{
        'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\paint.net' = [ordered]@{
            'Plugins/AllowAdditionalPluginDirectoryRoots' = [string] 'true'
        }
        'Registry::HKEY_CURRENT_USER\SOFTWARE\paint.net' = [ordered]@{
            'Plugins/AdditionalPluginDirectoryRoots' = [string](
                '{0}\_Share\AppData\Paint.net\AppFiles' -f $env:OneDriveConsumer
            )
        }
    }
    
    
    # Set registry values
    $RegistryValues.GetEnumerator().ForEach{
        $Path = [string] $_.'Name'
        if (-not (Test-Path -Path $Path -PathType 'Container')) {
            $null = New-Item -Path $Path -ItemType 'Directory' -Force
        }
        $_.'Value'.GetEnumerator().ForEach{
            $null = Set-ItemProperty -Path $Path -Name $_.'Name' -Value $_.'Value' -Type 'String' -Force
        }
    }

     

     

    • Like 1
  5. @Rick Brewster

     

    Just saw 4.3 got installed through Microsoft Store today. Then had to check the forums. Then saw that you've implemented this feature request. Sweet. :)

     

    I then went ahead to try it. Made following PowerShell script:

     

    Spoiler
    #Requires -RunAsAdministrator
    #Requires -Version 5.1
    <#
        .SYNOPSIS
            Sets additional plugin directories for Paint.NET
    
        .NOTES
            Author:   Olav Rønnestad Birkeland
            Created:  210923
            Modified: 210923
    
        .EXAMPLE
            & $psISE.'CurrentFile'.'FullPath'
    #>
    
    
    # Input parameters
    [OutputType($null)]
    Param()
    
    
    # PowerShell preferences
    $ErrorActionPreference = 'Stop'
    $InformationPreference = 'Continue'
    
    
    # Assets
    $RegistryValues = [ordered]@{
        'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\paint.net' = [ordered]@{
            'Plugins/AllowAdditionalPluginDirectoryRoots' = [byte] 1
        }
        'Registry::HKEY_CURRENT_USER\SOFTWARE\paint.net' = [ordered]@{
            'Plugins/AdditionalPluginDirectoryRoots' = [string](
                '{0}\_Share\AppData\Paint.net\AppFiles' -f $env:OneDriveConsumer
            )
        }
    }
    
    
    # Set registry values
    $RegistryValues.GetEnumerator().ForEach{
        $Path = [string] $_.'Name'
        if (-not (Test-Path -Path $Path -PathType 'Container')) {
            $null = New-Item -Path $Path -ItemType 'Directory' -Force
        }
        $_.'Value'.GetEnumerator().ForEach{
            $null = Set-ItemProperty -Path $Path -Name $_.'Name' -Value $_.'Value' -Type ($(if($_.'Value' -is [byte]){'DWord'}else{'String'})) -Force
        }
    }

     

     

     

    My "%OneDriveConsumer%\_Share\AppData\Paint.net\AppFiles" looks like attached picture. Inside there I have the MozJpeg plugins (https://github.com/0xC0000054/pdn-mozjpeg) amongst others.

     

    But I can't save to Mozjpeg. So don't think I've done it right. Settings don't mention any errors in "Plugin Errors". Except the already reported "PaintDotNet.Effects.dll.

     

    Do you see anything obious?

     

    • I assume the name for each registry key is like you wrote it "Plugins/AdditionalPluginDirectoryRoots", with forward slash and all.
    • For HKLM, you say true, registry don't have booleans, so I went with DWord.
    • For HKCU, I have absolute path, as you can see from the screenshot.

     

    Spoiler

    The folder HKCU points to

    image.png

    HKCU

    image.png

    HKLM

    image.png

     

     

  6. I use Paint.NET on multiple machines where I put app files (plugins) in my personal OneDrive, so I don't have to maintain this manually on all the devices.

     

    For machines without Known Folder Move (KFM) with OneDrive for Business, it has worked fine to create a directory symbolic link from "%USERPROFILE%\Documents\Paint.NET App Files" to "%ONEDRIVECONSUMER%\_Share\AppData\Paint.net\AppFiles", where I have the folders "Effects", "FileTypes" and "Shapes".

    • The "_Share" folder in my OneDrive is set to always be available offline, so no "Files on-deman" causing issues here.
    • Running v4.2.16 from Microsoft Store, but don't think that's relevant here.
    • Here is the CMD (as admin) command I used, if anyone is interested:
      mklink /D "%USERPROFILE%\Documents\Paint.NET App Files" "%ONEDRIVECONSUMER%\_Share\AppData\Paint.net\AppFiles"

       

    I think this failed this time due to my company using known folder move (KFM) with OneDrive for Business, as I see Paint.NET have created a "paint.net App Files" folder inside "%ONEDRIVECOMMERCIAL%\Documents". But symbolic linking from one OneDrive to another makes changes one place being uploaded to both OneDrives, so I'd rather avoid that if I could.

     

    Then I thought: It would be nice if it was possible to set a different directory for Paint.NET app files. Then I could just set this settings to the folder in my OneDrive.

  7. With Intune one have the option to package anything (EXE installer for instance) inside a "*.intunewin" package thanks to the "Microsoft Win32 Content Prep Tool" + Intune Win32.

     

    It would be awesome if the EXE installer "/auto" switch described here could be acompanied with a optional "/q" or "/quiet" switch which hides any GUI.

     

    This would make packaging Paint.NET to Intune even easier than it already is.

    • Currently one can "/createMSI" and put that directly to Intune or inside a "*.intunewin" package for more granular logic for detection and similar.
  8. I've bought the MS Store version earlier,

    but seeing how strong development still is for PDN, and that it's now being updated to .NET 5, I'm so stoked that I want to donate some more.

     

    Will donating from the PayPal phone (Android) app targeting donate@getpaint.net be any different than using the PayPal links at https://www.getpaint.net/donate.html? Regarding taxes and similar. Seems more convenient to use the phone app. 😊

    Screenshot_20210803-124241_PayPal.jpg

  9. Decode support since v4.2.2 using Microsofts decoder from Microsoft Store is great, thanks for that. 😊 

     

    It would be even greater if Paint.NET could embrace this new open codec even further by implementing the ability to create lossy and lossless AVIF files. Not asking for an ETA or anything, but better get the discussion going sooner rather than later.

     

    Since it's about creating a single keyframe, visual quality should be more important than performance/ speed. Don't know enough about AV1 encoders to say which is most fit, but someone else might have the answer to that.

     

    Leaving some inspiration on the topic of AVIF:

  10. I don't own a ARM64 Windows 10 device yet, but if I ever got one I'd be very glad if Paint.NET could run natively on it.

    • Would it be possible to compile Paint.NET to ARM64 without too much hassle for you developers?

     

    Maybe release it in Microsoft Store only. I've already payed for the store version and I love it. I very much like auto updates + supporting the Paint.NET developers at the same time.

  11. 38 minutes ago, Lizasaur said:

    I opened up properties and you're right! It is a .webp

    Does that mean I can't open it? Or is there a trick to getting it to work?

    Thank you so much :D

    If it's a real WebP file you should be able to open it with Paint.net natively I think. You could also try to install this extension for Windows 10, it lets you open WebP files natively in the "Photos" app:

    If it's not real WebP, maybe a PNG, remove the ".webp" in the end of the file name so it only says "<name>.png", then try open it with Paint.NET or Windows 10 built in "Photos" app.

  12. 3 hours ago, SodiumEnglish said:

    I don't think the video codecs would be relevant for an image editor. The image extensions you have listed would be the ones to use: HEIF, RAW, WebP.

     

    As for plugins already existing, there are already user-made plugins for RAW and WebP that you can use for both classic and Windows Store versions:

    Though, I have no idea how easy or possible it would be use those Windows Store items and could still be an option. However, how many image extensions are available in the store? If there are enough it may make sense to try and support them.

    HEIF image extension uses the HEVC video extension for the actual decoding. I think AV1 video decoder will be used for AVIF aswell. HEIF and AVIF are only containers, HEVC and AV1 are the format/ codec they use (yes, HEIF can take many other formats aswell).

     

    I also know of the user-made ones. But support for using Microsoft Store codecs for special image format decoding would be much easier to implement for users not that tech savvy. Plus "normal" users don't need to export to webp, avif and other fancy formats, they'll just be happy if they can open and edit photos from their phone and internet. I'm realising that I'm generalising much here, but yeah. :)

  13. Would be cool if both the exe installer version and the Microsoft Store version of Paint.NET could use the codecs available in the Microsoft Store to open special image file types. 

    This will mostly be decoding, AFAIK there is no encoder in these "codecs".

     

    Examples of codecs that would be relevant:

  14. First of all I'd like to say that I'm a long time user of Paint.NET, and just recently bought the Microsoft Store version. So far so good, well spent money.

     

    I'd like to request a feature addition: Ability to set a custom folder location for Paint.NET App Files.

    Today i use %userprofile%\Documents\Paint.NET App Files, symlinked to a OneDrive for Business folder, so I have the same tools across all my workstations.

    Have been working flawless until now, but symlinking is not compatible with OneDrive for Business latest features, "Known Folder Move".

    I'd like to have the ability in Paint.NET settings to set a custom App Files folder, directly to my OneDrive for Business folder.

     

    OD4B Known Folder Move - Paint.NET App Files symlink.PNG

  15. With Paint.net manual install version I could choose to open SVGs with Paint.net through the "Open with" dialog.

    With Paint.net Windows Store / UWP version, Paint.NET does not show as an alternative. I have to open Paint.NET first, then drag'n'drop a SVG on to it.

     

    I'm using this FileType plugin btw: https://github.com/otuncelli/Scalable-Vector-Graphics-Plugin-for-Paint.NET

     

    Is it possible to add SVG as a file type Paint.NET may be able to open, or is this a limitation with Windows Store/ UWP apps?

    Choosing the exe manually from UWP install folder (C:\Program Files\WindowsApps\dotPDNLLC.paint.net_4.101.6828.0_x64__h55e3w7q8jbva\PaintDotNet.exe) is not possible, gives an error code.

    Paint.net - SVG open with.PNG

×
×
  • Create New...