Skip to content

Commit 925707c

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

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323

2424
package io.flutter.plugins.imagepicker;
2525

26+
import android.content.ContentResolver;
2627
import android.content.Context;
2728
import android.net.Uri;
29+
import android.webkit.MimeTypeMap;
2830
import java.io.File;
2931
import java.io.FileOutputStream;
3032
import java.io.IOException;
@@ -39,7 +41,7 @@ String getPathFromUri(final Context context, final Uri uri) {
3941
OutputStream outputStream = null;
4042
boolean success = false;
4143
try {
42-
String extension = getImageExtension(uri);
44+
String extension = getImageExtension(context, uri);
4345
inputStream = context.getContentResolver().openInputStream(uri);
4446
file = File.createTempFile("image_picker", extension, context.getCacheDir());
4547
file.deleteOnExit();
@@ -67,13 +69,17 @@ String getPathFromUri(final Context context, final Uri uri) {
6769
}
6870

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

7375
try {
74-
String imagePath = uriImage.getPath();
75-
if (imagePath != null && imagePath.lastIndexOf(".") != -1) {
76-
extension = imagePath.substring(imagePath.lastIndexOf(".") + 1);
76+
if (uriImage.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
77+
final MimeTypeMap mime = MimeTypeMap.getSingleton();
78+
extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uriImage));
79+
} else {
80+
extension =
81+
MimeTypeMap.getFileExtensionFromUrl(
82+
Uri.fromFile(new File(uriImage.getPath())).toString());
7783
}
7884
} catch (Exception e) {
7985
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)