fix: legere baisse resolution pour augmenter fluidité de l appli
This commit is contained in:
@@ -55,7 +55,37 @@ void _cropIsolateEntry(_CropParams params) {
|
||||
throw Exception('Impossible de décoder l\'image: ${params.sourcePath}');
|
||||
}
|
||||
|
||||
// ── OPTIMISATION MAJEURE : pré-réduction avant rotation ───────────────────
|
||||
// La rotation (copyRotate) est l'opération la plus lourde du package `image`
|
||||
// et son coût est proportionnel au nombre de pixels. Comme la sortie finale
|
||||
// ne fait que `outputSize` px, on n'a aucun intérêt à faire pivoter une image
|
||||
// de plusieurs dizaines de mégapixels.
|
||||
//
|
||||
// On réduit donc l'image source à une "taille de travail" juste suffisante
|
||||
// AVANT toute rotation/crop. Le crop garde ~85% du cadre, donc on laisse une
|
||||
// marge : workMax = outputSize / 0.7 couvre largement le besoin sans perte
|
||||
// visible. Les coordonnées de crop étant relatives (0..1), elles restent
|
||||
// valables quelle que soit l'échelle.
|
||||
final int workMax = (params.outputSize / 0.7).round();
|
||||
final int longestSide = math.max(originalImage.width, originalImage.height);
|
||||
if (longestSide > workMax) {
|
||||
if (originalImage.width >= originalImage.height) {
|
||||
originalImage = img.copyResize(
|
||||
originalImage,
|
||||
width: workMax,
|
||||
interpolation: img.Interpolation.linear,
|
||||
);
|
||||
} else {
|
||||
originalImage = img.copyResize(
|
||||
originalImage,
|
||||
height: workMax,
|
||||
interpolation: img.Interpolation.linear,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Rotation si nécessaire — LINEAR au lieu de CUBIC pour la vitesse
|
||||
// (désormais appliquée sur une image déjà réduite → beaucoup plus rapide)
|
||||
if (params.rotationDegrees != 0.0) {
|
||||
originalImage = img.copyRotate(
|
||||
originalImage,
|
||||
|
||||
Reference in New Issue
Block a user