Skip to content

Commit 6647812

Browse files
committed
flutter#1 - Fixing GIF being exported as JPG issue
1 parent 105c2bc commit 6647812

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

packages/image_picker/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/FileUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import android.content.Context;
2727
import android.net.Uri;
28+
import android.webkit.MimeTypeMap;
2829
import java.io.File;
2930
import java.io.FileOutputStream;
3031
import java.io.IOException;
@@ -39,7 +40,7 @@ String getPathFromUri(final Context context, final Uri uri) {
3940
OutputStream outputStream = null;
4041
boolean success = false;
4142
try {
42-
String extension = getImageExtension(uri);
43+
String extension = getImageExtension(context, uri);
4344
inputStream = context.getContentResolver().openInputStream(uri);
4445
file = File.createTempFile("image_picker", extension, context.getCacheDir());
4546
file.deleteOnExit();
@@ -67,13 +68,16 @@ String getPathFromUri(final Context context, final Uri uri) {
6768
}
6869

6970
/** @return extension of image with dot, or default .jpg if it none. */
70-
private static String getImageExtension(Uri uriImage) {
71+
private static String getImageExtension(final Context context, Uri uriImage) {
7172
String extension = null;
7273

7374
try {
74-
String imagePath = uriImage.getPath();
75+
final String imagePath = uriImage.getPath();
7576
if (imagePath != null && imagePath.lastIndexOf(".") != -1) {
7677
extension = imagePath.substring(imagePath.lastIndexOf(".") + 1);
78+
} else if (imagePath != null && imagePath.lastIndexOf(".") == -1) {
79+
final MimeTypeMap mime = MimeTypeMap.getSingleton();
80+
extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uriImage));
7781
}
7882
} catch (Exception e) {
7983
extension = null;

packages/image_picker/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerDelegate.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,11 @@ public void onPathReady(String path) {
548548

549549
private void handleImageResult(String path, boolean shouldDeleteOriginalIfScaled) {
550550
if (methodCall != null) {
551+
if (path.toLowerCase().endsWith(".gif")) {
552+
finishWithSuccess(path);
553+
return;
554+
}
555+
551556
Double maxWidth = methodCall.argument("maxWidth");
552557
Double maxHeight = methodCall.argument("maxHeight");
553558
Integer imageQuality = methodCall.argument("imageQuality");

0 commit comments

Comments
 (0)