feat(app): crop cover & banner before upload (crop_your_image, 16:9 / 3:1)

review fixes: drop GIF from pre-sniff (package maps gif→png decode → never-ready hang); PopScope blocks back during processing

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-28 15:39:39 +08:00
parent 97db504e25
commit 683e19bdc1
10 changed files with 632 additions and 7 deletions
+6 -1
View File
@@ -429,5 +429,10 @@
"posterSaveFailed": "Failed to save poster",
"close": "Close",
"albumUploadDisabled": "Upload is disabled for this album",
"networkOfflineBanner": "No network. Photos will upload automatically when reconnected."
"networkOfflineBanner": "No network. Photos will upload automatically when reconnected.",
"cropTitle": "Crop image",
"cropConfirm": "Done",
"cropCancel": "Cancel",
"cropProcessing": "Processing…",
"cropUnsupportedFormat": "This image format isn't supported yet — please pick JPG/PNG"
}
@@ -2029,6 +2029,36 @@ abstract class AppLocalizations {
/// In zh, this message translates to:
/// **'当前无网络连接,照片将在恢复后自动上传'**
String get networkOfflineBanner;
/// No description provided for @cropTitle.
///
/// In zh, this message translates to:
/// **'裁剪图片'**
String get cropTitle;
/// No description provided for @cropConfirm.
///
/// In zh, this message translates to:
/// **'完成'**
String get cropConfirm;
/// No description provided for @cropCancel.
///
/// In zh, this message translates to:
/// **'取消'**
String get cropCancel;
/// No description provided for @cropProcessing.
///
/// In zh, this message translates to:
/// **'处理中…'**
String get cropProcessing;
/// No description provided for @cropUnsupportedFormat.
///
/// In zh, this message translates to:
/// **'暂不支持该图片格式,请选择 JPG/PNG'**
String get cropUnsupportedFormat;
}
class _AppLocalizationsDelegate
@@ -1038,4 +1038,20 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get networkOfflineBanner =>
'No network. Photos will upload automatically when reconnected.';
@override
String get cropTitle => 'Crop image';
@override
String get cropConfirm => 'Done';
@override
String get cropCancel => 'Cancel';
@override
String get cropProcessing => 'Processing…';
@override
String get cropUnsupportedFormat =>
'This image format isn\'t supported yet — please pick JPG/PNG';
}
@@ -1004,4 +1004,19 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get networkOfflineBanner => '当前无网络连接,照片将在恢复后自动上传';
@override
String get cropTitle => '裁剪图片';
@override
String get cropConfirm => '完成';
@override
String get cropCancel => '取消';
@override
String get cropProcessing => '处理中…';
@override
String get cropUnsupportedFormat => '暂不支持该图片格式,请选择 JPG/PNG';
}
+6 -1
View File
@@ -429,5 +429,10 @@
"posterSaveFailed": "海报保存失败",
"close": "关闭",
"albumUploadDisabled": "该相册已关闭上传,无法添加照片",
"networkOfflineBanner": "当前无网络连接,照片将在恢复后自动上传"
"networkOfflineBanner": "当前无网络连接,照片将在恢复后自动上传",
"cropTitle": "裁剪图片",
"cropConfirm": "完成",
"cropCancel": "取消",
"cropProcessing": "处理中…",
"cropUnsupportedFormat": "暂不支持该图片格式,请选择 JPG/PNG"
}