Add option to keep original sprite sizes. Close #107

- Enabled by default
- [GUI] Added "Keep original sprite sizes" option to the Export options
- [CLI] Added "--sprite-cropping" option to the Advanced section
This commit is contained in:
VaDiM
2026-03-14 20:21:42 +03:00
parent 61d9bc8f15
commit 79d192ab70
10 changed files with 142 additions and 24 deletions
+10 -10
View File
@@ -27,17 +27,17 @@ namespace AssetStudio
private Vector2 textureRectOffset;
private float downscaleMultiplier;
private SpriteSettings settingsRaw;
private bool cutImageWithCanvas;
private bool keepSpriteSize;
private int resultWidth;
private int resultHeight;
public Texture2D m_Texture2D { get; }
public Texture2D m_AlphaTexture2D { get; }
public SpriteConverter(Sprite m_Sprite, bool cutWithCanvas = true)
public SpriteConverter(Sprite m_Sprite, bool keepSize = true)
{
sprite = m_Sprite;
cutImageWithCanvas = cutWithCanvas;
keepSpriteSize = keepSize;
if (m_Sprite.m_SpriteAtlas != null && m_Sprite.m_SpriteAtlas.TryGet(out var m_SpriteAtlas))
{
@@ -66,12 +66,12 @@ namespace AssetStudio
if (textureRect == null)
return;
resultWidth = cutImageWithCanvas
? (int)sprite.m_Rect.width
: (int)textureRect.width;
resultHeight = cutImageWithCanvas
? (int)sprite.m_Rect.height
: (int)textureRect.height;
resultWidth = keepSpriteSize
? (int)MathF.Round(sprite.m_Rect.width)
: (int)MathF.Round(textureRect.width);
resultHeight = keepSpriteSize
? (int)MathF.Round(sprite.m_Rect.height)
: (int)MathF.Round(textureRect.height);
}
public bool TryConvertToImage(out Image<Bgra32> spriteImage, SpriteMaskMode maskMode)
@@ -113,7 +113,7 @@ namespace AssetStudio
if (croppedImage == null)
return null;
if (!cutImageWithCanvas)
if (!keepSpriteSize)
return croppedImage;
using (croppedImage)
+2 -2
View File
@@ -5,9 +5,9 @@ namespace AssetStudio
{
public static class SpriteExtensions
{
public static bool TryGetImage(this Sprite m_Sprite, out Image<Bgra32> spriteImage, SpriteMaskMode spriteMaskMode = SpriteMaskMode.On)
public static bool TryGetImage(this Sprite m_Sprite, out Image<Bgra32> spriteImage, SpriteMaskMode spriteMaskMode = SpriteMaskMode.On, bool keepSpriteSize = true)
{
return new SpriteConverter(m_Sprite).TryConvertToImage(out spriteImage, spriteMaskMode);
return new SpriteConverter(m_Sprite, keepSpriteSize).TryConvertToImage(out spriteImage, spriteMaskMode);
}
}
}