Powiedzmy, że mam magazyn obrazów na ścieżce "/mnt/images/abc.jpg"
. Jak uzyskać miniaturową mapę bitową generowaną przez system dla tego obrazu. Wiem jak zdobyć miniatury obrazu z jego Uri, ale nie z jego pliku ścieżceAndroid uzyskać miniaturkę obrazu zapisanego na sdcard, którego ścieżka jest znana
Odpowiedz
można uzyskać Uri
z pliku jak poniżej:
Uri uri = Uri.fromFile(new File("/mnt/images/abc.jpg"));
Bitmap thumbnail = getPreview(uri);
A po function daje miniatur:
Bitmap getPreview(Uri uri) {
File image = new File(uri.getPath());
BitmapFactory.Options bounds = new BitmapFactory.Options();
bounds.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image.getPath(), bounds);
if ((bounds.outWidth == -1) || (bounds.outHeight == -1))
return null;
int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight
: bounds.outWidth;
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = originalSize/THUMBNAIL_SIZE;
return BitmapFactory.decodeFile(image.getPath(), opts);
}
Myślę, że przy użyciu 'MediaStore.Images.Thumbnails.getThumbnail (getContentResolver(), Long.parseLong (_imageUri.getLastPathSegment()), typu, null);' byłoby lepszym rozwiązaniem, ponieważ system większość czasu buforuje miniatury – pankajagarwal
@frieza Zgadzam się. – Caner
Twoja metoda uzyskiwania URI nie wydaje się działać poprawnie, ponieważ dla pliku o ścieżce "/ mnt/sdcard/2011-12-02 11.22.50.jpg" rzeczywista nazwa użytkownika to: // media/external/images/media/556 gdzie jako metoda Uri.fromFile (...) zwraca plik: ///mnt/sdcard/2011-12-02%2011.22.50.jpg – pankajagarwal
można spróbować z tym:
public static Bitmap getThumbnail(ContentResolver cr, String path) throws Exception {
Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] {path}, null);
if (ca != null && ca.moveToFirst()) {
int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
ca.close();
return MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
}
ca.close();
return null;
}
Dziękuję, działa idealnie – lukas
dziękuję, proszę pana! i oczywiste, ale ktoś może tego potrzebować, jeśli chcesz wyświetlać większe obrazy, użyj MediaStore.Images.Thumbnails.MINI_KIND – keybee
Najlepsze rozwiązanie, które znalazłem.Dziękuję bardzo, to powinna być akceptowana odpowiedź. – Tunerx
To może być alternatywne sposoby jak inne już wspomniano w swojej odpowiedzi, ale łatwy sposób znalazłem, aby uzyskać miniaturę korzysta ExifInterface
ExifInterface exif = new ExifInterface(pictureFile.getPath());
byte[] imageData=exif.getThumbnail();
if (imageData!=null) //it can not able to get the thumbnail for very small images , so better to check null
Bitmap thumbnail= BitmapFactory.decodeByteArray(imageData,0,imageData.length);
W niektórych przypadkach nie jest to praca. Nie lepsze niż uzyskiwanie z Image Store, jak w zaakceptowanej odpowiedzi. –
Yaa, gdy BitmapFactory nie będzie w stanie dekodować tablicy bajtów tylko wtedy. – dhams
można po prostu stworzyć film miniatury i obrazu za pomocą ThumnailUtil klasę java
Bitmap resized = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(file.getPath()), width, height);
public static Bitmap createVideoThumbnail (String filePath, int kind)
Dodano na poziomie interfejsu API 8 Utwórz miniaturę filmu wideo. Może zwrócić wartość null, jeśli film jest uszkodzony lub format nie jest obsługiwany.
Parametry filePath ścieżka pliku wideo rodzaju może być MINI_KIND lub MICRO_KIND
Użyj android klasa bitmapy i jego createScaledBitmap metoda.
metoda descroption:
public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)
Przykład użycia:
Bitmap bitmap = BitmapFactory.decodeFile(img_path);
int origWidth = bitmap.getWidth();
int origHeight = bitmap.getHeight();
bitmap = Bitmap.createScaledBitmap(bitmap, origWidth/10, origHeight/10, false);
spadek plik źródłowy tak, jak chcesz. W moim przykładzie zmniejszyłem go 10 razy.
- 1. Pobierz miniaturkę wideo ŚCIEŻKA, nie Bitmapa
- 2. Emacs: najszybszy sposób otwarcia pliku, którego lokalizacja nie jest znana.
- 3. Android intent dla sdcard gotowy
- 4. Pobierz nazwę pliku obrazu zapisanego na albumie zdjęć
- 5. Zapisywanie obrazu zapisanego na s3 przy użyciu pliku node.js?
- 6. ścieżka kodowania obrazu
- 7. Access/sdcard w systemie Android 4.2
- 8. Udostępnianie obrazu android w ImageView bez zapisywania na karcie SD
- 9. Tworzenie pliku, którego ścieżka nie istnieje?
- 10. Java: jak uzyskać miniaturkę z pliku
- 11. Funkcja powrocie typu rodzajowego, którego wartość jest znana tylko w czasie wykonywania
- 12. Android pobierz obraz galerii Ścieżka Uri
- 13. Wyszukiwanie zapisanego pliku na symulatorze?
- 14. Nieprawidłowa ścieżka obrazu - Nie znaleziono obrazu AppIcon120x120
- 15. Jak sprawdzić, czy sdcard jest zamontowany w systemie Android?
- 16. iPhone: Jak uzyskać ścieżkę do pliku obrazu zapisanego za pomocą UIImageWriteToSavedPhotosAlbum()?
- 17. Wpf - ścieżka względnego źródła obrazu
- 18. jest tam, aby uzyskać uri bitmapy bez zapisania jej na sdcard?
- 19. Jak mogę uzyskać miniaturkę używaną przez Nautilus dla danego pliku?
- 20. Czy istnieje różnica między/mnt/sdcard i/sdcard?
- 21. jak uzyskać URI zasobu obrazu w android
- 22. Ścieżka rysowania systemu Android
- 23. jak uzyskać dostępną wolną przestrzeń na sdcard z aplikacji na Androida?
- 24. Jak uzyskać rzeczywisty punkt odniesienia, którego używa Android GPS?
- 25. javascript: uzyskać ścieżka url
- 26. Pobierz miniaturkę wideo z adresu URL wideo
- 27. Dlaczego Ścieżka dużego obrazu nie jest w tym ustawiona?
- 28. Jak uzyskać szerokość geograficzną i długość obrazu w sdcard do mojej aplikacji?
- 29. Jak zrobić miniaturkę div
- 30. Uzyskiwanie obrazu ThumbNail w systemie Android
Możesz po prostu utworzyć miniaturowe wideo i obraz za pomocą klasy ThumnailUtil java Rozmiar bitmapy zmieniony = ThumbnailUtils.extractThumbnail (BitmapFactory.decodeFile (file.getPath()), szerokość, wysokość); –