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