feat: 实现纹理图集生成功能

添加纹理图集生成工具,支持多图片合并为单个图集并生成坐标数据文件

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-26 21:10:58 +08:00
parent 54009163b1
commit 663917f663
11 changed files with 3041 additions and 114 deletions

View File

@@ -59,7 +59,7 @@ export interface ProcessingProgress {
* Tool types
*/
export type ToolType = "video-frames" | "image-compress" | "audio-compress" | "ai-image" | "ai-audio";
export type ToolType = "video-frames" | "image-compress" | "audio-compress" | "texture-atlas" | "ai-image" | "ai-audio";
export interface ToolConfig {
type: ToolType;
@@ -129,7 +129,7 @@ export interface VideoFramesConfig {
export interface ImageCompressConfig {
quality: number;
format: "original" | "jpeg" | "png" | "webp";
format: "original" | "auto" | "jpeg" | "png" | "webp" | "avif";
resize?: {
width?: number;
height?: number;
@@ -143,3 +143,52 @@ export interface AudioCompressConfig {
sampleRate: number;
channels: number;
}
/**
* Texture Atlas types
*/
export interface TextureAtlasConfig {
maxWidth: number;
maxHeight: number;
padding: number;
allowRotation: boolean;
pot: boolean; // Power of Two
format: "png" | "webp";
quality: number;
outputFormat: "cocos2d" | "cocos-creator" | "generic-json";
algorithm: "MaxRects" | "Shelf";
}
export interface AtlasSprite {
id: string;
name: string;
width: number;
height: number;
buffer: Buffer;
}
export interface AtlasRect {
x: number;
y: number;
width: number;
height: number;
rotated?: boolean;
}
export interface AtlasFrame {
filename: string;
frame: AtlasRect;
rotated: boolean;
trimmed: boolean;
spriteSourceSize: { x: number; y: number; w: number; h: number };
sourceSize: { w: number; h: number };
}
export interface TextureAtlasResult {
width: number;
height: number;
image: Buffer;
frames: AtlasFrame[];
format: string;
}