refactor: Code cleanup

This commit is contained in:
Koji Wakamiya 2025-12-08 19:43:39 +09:00
parent 5a9842cdeb
commit 8e2eda15ce
No known key found for this signature in database
1 changed files with 32 additions and 46 deletions

View File

@ -34,19 +34,19 @@ final class ImageConverterAndroid implements ImageConverterPlatform {
OutputFormat format = OutputFormat.jpeg,
int quality = 100,
}) async {
final inputJBytes = JByteArray.from(inputData);
JByteArray? inputJBytes;
Bitmap? bitmap;
Bitmap$CompressFormat? compressFormat;
ByteArrayOutputStream? outputStream;
JByteArray? outputJBytes;
try {
final bitmap = BitmapFactory.decodeByteArray(
inputJBytes,
0,
inputData.length,
);
inputJBytes = JByteArray.from(inputData);
bitmap = BitmapFactory.decodeByteArray(inputJBytes, 0, inputData.length);
if (bitmap == null) {
throw Exception('Failed to decode image. Invalid image data.');
}
try {
final compressFormat = switch (format) {
compressFormat = switch (format) {
OutputFormat.jpeg => Bitmap$CompressFormat.JPEG,
OutputFormat.png => Bitmap$CompressFormat.PNG,
OutputFormat.webp => Bitmap$CompressFormat.WEBP_LOSSY,
@ -55,39 +55,25 @@ final class ImageConverterAndroid implements ImageConverterPlatform {
),
};
try {
final outputStream = ByteArrayOutputStream();
try {
final success = bitmap.compress(
compressFormat,
quality,
outputStream,
);
outputStream = ByteArrayOutputStream();
final success = bitmap.compress(compressFormat, quality, outputStream);
if (!success) {
throw Exception('Failed to compress bitmap.');
}
final outputJBytes = outputStream.toByteArray();
outputJBytes = outputStream.toByteArray();
if (outputJBytes == null) {
throw Exception('Failed to get byte array from output stream.');
}
try {
final outputList = outputJBytes.toList();
return Uint8List.fromList(outputList);
return Uint8List.fromList(outputJBytes.toList());
} finally {
outputJBytes.release();
}
} finally {
outputStream.release();
}
} finally {
compressFormat.release();
}
} finally {
bitmap.release();
}
} finally {
inputJBytes.release();
inputJBytes?.release();
bitmap?.recycle();
bitmap?.release();
compressFormat?.release();
outputStream?.release();
outputJBytes?.release();
}
}
}