mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-24 04:00:02 +01:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Adds a dedicated command-line interface (CLI) executable for Image Resizer (PowerToys.ImageResizerCLI.exe) ## Command `PowerToys.ImageResizerCLI.exe [options] [files...]` ## Options (High Level) | Option (aliases) | Description | |-----------------|-------------| | `--help` | Show help | | `--show-config` | Print current effective configuration | | `--destination`, `-d` | Output directory (optional) | | `--width`, `-w` | Width | | `--height`, `-h` | Height | | `--unit`, `-u` | Unit (Pixel / Percent / Inch / Centimeter) | | `--fit`, `-f` | Fit mode (Fill / Fit / Stretch) | | `--size`, `-s` | Preset size index (supports `0` for Custom) | | `--shrink-only` | Only shrink (do not enlarge) | | `--replace` | Replace original | | `--ignore-orientation` | Ignore EXIF orientation | | `--remove-metadata` | Strip metadata | | `--quality`, `-q` | JPEG quality (1–100) | | `--keep-date-modified` | Preserve source last-write time | | `--file-name` | Output filename format | ## Example usage ``` # Show help PowerToys.ImageResizerCLI.exe --help # Show current config PowerToys.ImageResizerCLI.exe --show-config # Resize with explicit dimensions PowerToys.ImageResizerCLI.exe --width 800 --height 600 .\image.png # Use preset size 0 (Custom) and output to a folder PowerToys.ImageResizerCLI.exe --size 0 -d "C:\Output" .\photo.png # Preserve source LastWriteTime PowerToys.ImageResizerCLI.exe --width 800 --height 600 --keep-date-modified -d "C:\Output" .\image.png ```  <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** Added/updated - [x] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
82 lines
3.5 KiB
XML
82 lines
3.5 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<!-- Look at Directory.Build.props in root for common stuff as well -->
|
|
<Import Project="..\..\..\Common.Dotnet.CsWinRT.props" />
|
|
<Import Project="..\..\..\Common.SelfContained.props" />
|
|
|
|
<PropertyGroup>
|
|
<AssemblyTitle>PowerToys.ImageResizer</AssemblyTitle>
|
|
<OutputPath>..\..\..\..\$(Platform)\$(Configuration)\WinUI3Apps\</OutputPath>
|
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
|
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
|
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
|
|
<UseWPF>true</UseWPF>
|
|
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<ProjectGuid>{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}</ProjectGuid>
|
|
<OutputType>WinExe</OutputType>
|
|
<RootNamespace>ImageResizer</RootNamespace>
|
|
<AssemblyName>PowerToys.ImageResizer</AssemblyName>
|
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
<NoWarn>CA1863</NoWarn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<ApplicationIcon>Resources\ImageResizer.ico</ApplicationIcon>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<ApplicationManifest>ImageResizerUI.dev.manifest</ApplicationManifest>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(CIBuild)'=='true'">
|
|
<ApplicationManifest>ImageResizerUI.prod.manifest</ApplicationManifest>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<EmbeddedResource Update="Properties\Resources.resx">
|
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
<SubType>Designer</SubType>
|
|
</EmbeddedResource>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Resource Include="Resources\ImageResizer.ico" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Resource Include="Resources\ImageResizer.png" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.WindowsAppSDK" />
|
|
<PackageReference Include="Microsoft.WindowsAppSDK.AI" />
|
|
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
|
|
<PackageReference Include="System.CommandLine" />
|
|
<PackageReference Include="System.IO.Abstractions" />
|
|
<PackageReference Include="WPF-UI" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\..\common\GPOWrapperProjection\GPOWrapperProjection.csproj" />
|
|
<ProjectReference Include="..\..\..\common\interop\PowerToys.Interop.vcxproj" />
|
|
<ProjectReference Include="..\..\..\common\Common.UI\Common.UI.csproj" />
|
|
<ProjectReference Include="..\..\..\common\ManagedCommon\ManagedCommon.csproj" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Compile Update="Properties\Resources.Designer.cs">
|
|
<DesignTime>True</DesignTime>
|
|
<AutoGen>True</AutoGen>
|
|
<DependentUpon>Resources.resx</DependentUpon>
|
|
</Compile>
|
|
</ItemGroup>
|
|
|
|
<!-- Ensure Resources directory and ImageResizer.png are available for dependent projects -->
|
|
<Target Name="CopyResourcesToSharedLocation" AfterTargets="Build">
|
|
<ItemGroup>
|
|
<ResourceFiles Include="$(MSBuildProjectDirectory)\Resources\ImageResizer.png" />
|
|
</ItemGroup>
|
|
<MakeDir Directories="$(OutputPath)Resources" Condition="!Exists('$(OutputPath)Resources')" />
|
|
<Copy SourceFiles="@(ResourceFiles)" DestinationFolder="$(OutputPath)Resources" SkipUnchangedFiles="true" />
|
|
</Target>
|
|
|
|
</Project> |