Picasso v / s Imageloader v / s Fresco vs Glide [đã đóng]


344

Kết quả:

  1. Sự khác biệt giữa Picasso v / s ImageLoader tại đây ...
  2. Thông tin về thư viện GLIDE tại đây ...
  3. Gần đây, Facebook đã phát hành thư viện hình ảnh mới có tên Fresco

Câu hỏi:

  1. Sự khác biệt giữa Picasso v / s Imageloader v / s Fresco
  2. Khi nào chúng ta có thể sử dụng Glide
  3. Đó là thư viện tốt nhất để sử dụng.
  4. Nếu mỗi thư viện có ý nghĩa riêng, chúng là gì?

tôi cũng quan tâm đến bích họa. bất cứ ai có thể giải thích sự khác biệt?
Krit


8
Đây không phải là nơi để đặt câu hỏi dựa trên ý kiến
danny117

16
@ danny117 vậy chúng ta có thể làm gì ở đây nếu chúng ta không có ý tưởng gì về nó?
Anand Savć

2
@ShobhitPuri công cụ này sẽ giúp bạn kiểm tra số lượng phương thức
Nicholas Ng

Câu trả lời:


189

Tôi là một trong những kỹ sư của dự án Fresco. Vì vậy, rõ ràng tôi thiên vị.

Nhưng bạn không cần phải tin lời tôi. Chúng tôi đã phát hành một ứng dụng mẫu cho phép bạn so sánh hiệu suất của năm thư viện - Fresco, Picasso, UIL, Glide và Volley Image Loader - cạnh nhau. Bạn có thể lấy nó tại repo GitHub của chúng tôi .

Tôi cũng nên chỉ ra rằng Fresco có sẵn trên Maven Central com.facebook.fresco:fresco.

Fresco cung cấp các tính năng mà Picasso, UIL và Glide chưa có:

  1. Hình ảnh không được lưu trữ trong heap Java, nhưng trong heap ashmem. Bộ đệm byte trung gian cũng được lưu trữ trong heap riêng. Điều này để lại nhiều bộ nhớ hơn cho các ứng dụng sử dụng. Nó làm giảm nguy cơ OutOfMemoryErrors. Nó cũng làm giảm số lượng ứng dụng thu gom rác phải làm, dẫn đến hiệu suất tốt hơn.
  2. Hình ảnh JPEG lũy tiến có thể được phát trực tuyến, giống như trong trình duyệt web.
  3. Hình ảnh có thể được cắt xung quanh bất kỳ điểm nào, không chỉ trung tâm.
  4. Hình ảnh JPEG có thể được thay đổi kích thước nguyên bản. Điều này tránh được vấn đề OOMing trong khi cố gắng thu nhỏ hình ảnh.

Có nhiều cái khác ( xem tài liệu của chúng tôi ), nhưng đây là những thứ quan trọng nhất.


1
Cảm ơn, bạn có thể đính kèm kết quả của "Chúng tôi đã phát hành một ứng dụng mẫu cho phép bạn so sánh hiệu suất của năm thư viện" theo định dạng bảng với câu trả lời của bạn không?
mmlooloo

1
Fresco có một số tính năng hơn các tính năng khác, nhưng cũng lớn hơn nhiều ..
ligi

4
họ đã thêm một 's' ở phía sau của liên kết. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen tôi quan tâm đến Fresco. Nó có cho phép tải hình ảnh cục bộ thay vì từ mạng không? Cảm ơn
GmloMalo

1
@wedi đúng rồi.
tyronen

131

Xin lưu ý bạn rằng đây là một câu hỏi dựa trên quan điểm cao, vì vậy tôi đã ngừng tạo ra các vịnh hẹp và lập một bảng nhanh chóng

nhập mô tả hình ảnh ở đây

Bây giờ việc so sánh thư viện rất khó vì trên nhiều tham số, cả bốn tham số đều làm điều tương tự, ngoại trừ có thể cho Fresco vì có cả đống tối ưu hóa mức bộ nhớ mới trong đó. Vì vậy, hãy cho tôi biết nếu bạn muốn biết một số tham số nhất định. xem một so sánh dựa trên kinh nghiệm của tôi

Đã sử dụng Fresco ít nhất, câu trả lời có thể phát triển khi tôi tiếp tục sử dụng và hiểu nó cho các khai thác hiện tại. Việc used personallysử dụng thư viện ít nhất một lần trong một ứng dụng đã hoàn thành.

* Lưu ý - Fresco hiện hỗ trợ GIF cũng như hoạt ảnh WebP


1
Tôi tò mò về các mức độ 'Khả năng tùy chỉnh', 'Sử dụng hình ảnh mạng' thấp hơn và 'Dễ sử dụng' cho Fresco. Cơ sở của những xếp hạng này là gì?
tyronen

1
Chủ yếu là lần đầu tiên sử dụng, sẽ sử dụng Fresco thêm một chút để hiểu, câu trả lời này có thể phát triển :)
Vrashabh Irde

1
@Slartibartfast Bạn có cơ hội dùng thử Fresco và phiên bản Glide 3.0 mới nhất không? Bạn vẫn sẽ đánh giá chúng như nhau?
Shobhit Puri

2
Bạn đã bỏ lỡ một khía cạnh quan trọng. ... kích thước thư viện. Đây là lý do chính khiến Picasso và UImageLoader không hỗ trợ GIF. Giấy phép cũng sẽ tốt để bao gồm.
Được sửa đổi vào

3
@AhamadullahSaikat Những người anh ấy đã sử dụng cá nhân.
Pierre

112

Nguồn Fresco | off site
(-)
- Kích thước khổng lồ của thư viện
- Không có cuộc gọi lại với chế độ xem, tham số Bitmap
- SimpleDraweeView không hỗ trợ quấn_content
- Kích thước lớn của bộ đệm
(+)
- Trình tải hình ảnh khá nhanh (cho hình ảnh nhỏ && trung bình)
- Rất nhiều chức năng (phát trực tuyến, công cụ vẽ, quản lý bộ nhớ, v.v.)
- Khả năng thiết lập trực tiếp trong xml (ví dụ: góc tròn)
- Hỗ trợ GIF
- Hỗ trợ WebP và Webp hoạt hình


Nguồn Picasso | off site
(-)
- Tải chậm hình ảnh lớn từ internet vào ListView
(+)
- Kích thước thư viện
nhỏ - Kích thước bộ đệm nhỏ
- Sử dụng đơn giản
- Giao diện người dùng không bị đóng băng
- Hỗ trợ WebP


Nguồn Glide

(-)
- Kích thước lớn của thư viện
(+)
- Kích thước bộ nhớ cache
- Sử dụng đơn giản
- Hỗ trợ GIF
- Hỗ trợ WebP
- Tải nhanh hình ảnh lớn từ internet vào ListView
- UI không bị đóng băng
- BitmapPool để sử dụng lại bộ nhớ và do đó, các sự kiện GC ít hơn


Các nguồn tải hình ảnh phổ quát

(-)
- Chức năng hạn chế (xử lý hình ảnh hạn chế)
- Hỗ trợ dự án đã dừng từ ngày 27.11.2015
(+)
- Kích thước tinny của thư viện
- Sử dụng đơn giản


Được thử nghiệm bởi tôi trên SGS2 (Android 4.1) (WiFi 8.43 Mbps)
Phiên bản chính thức cho Java, không dành cho Xamarin!
Ngày 19 tháng 10 năm 2015

tôi thích sử dụng Glide.
Đọc thêm ở đây .
Cách ghi bộ nhớ cache vào Bộ nhớ ngoài (Thẻ SD) bằng Glide.


4
"Trình tải hình ảnh khá nhanh" dường như mâu thuẫn với "Đóng băng ứng dụng" cho Fresco.
TWiStErRob

2
Tôi có Picasso trong một dự án Xamarin và việc sử dụng bộ nhớ là HUGE (được sử dụng để tải hình ảnh vào chế độ xem tái chế). OutOfMemorymọi lúc ...
Vahid Amiri

@ VSG24 có 2 tùy chọn: 1) bạn đang sử dụng sai. 2) Phiên bản Android (java) của lib không giống với Xamarain
Volodymyr Kulyk

1
Như một Glide tiêu cực (-) Tôi đã trải qua rất nhiều nhấp nháy. Các hình ảnh được tải sẽ được "thiết lập lại" từ hư không
FRR

1
@RJFares Tôi đã thử phiên bản mới nhất gần đây, bạn có thể sử dụng ImagePipelineConfig.setDownsampleEnabled(true)để ngăn chặn nó bị đóng băng. Nhưng đôi khi nó bỏ qua các khung của một GIF. Nếu bạn chỉ hiển thị hình ảnh tĩnh trên ứng dụng của mình, tôi nghĩ bạn có thể dùng thử.
Kimi Chiu

109

Những câu trả lời này hoàn toàn là ý kiến ​​của tôi

Đáp án

  1. Picasso là một trình tải hình ảnh dễ sử dụng, tương tự với Imageloader. Fresco sử dụng một cách tiếp cận khác để tải hình ảnh, tôi chưa sử dụng nó nhưng nó trông giống như một giải pháp để lấy hình ảnh từ mạng và lưu trữ chúng sau đó hiển thị hình ảnh. sau đó là một cách khác như Picasso / Imageloader / Glide mà theo tôi là nhiều hơn Hiển thị hình ảnh trên màn hình cũng nhận hình ảnh từ mạng và lưu trữ chúng.

  2. Glide cố gắng có thể hoán đổi được với Picasso. Tôi nghĩ rằng khi chúng được tạo ra, tâm trí của Picasso đã tuân theo thông số HTTP và để máy chủ quyết định các chính sách bộ đệm và bộ đệm có kích thước đầy đủ và thay đổi kích thước theo yêu cầu. Glide giống với việc theo thông số HTTP nhưng cố gắng có dung lượng bộ nhớ nhỏ hơn bằng cách đưa ra một số giả định khác nhau như lưu trữ hình ảnh đã thay đổi kích thước thay vì hình ảnh đầy đủ và hiển thị hình ảnh với RGB_565 thay vì RGB_8888. Cả hai thư viện đều cung cấp tùy chỉnh đầy đủ các cài đặt mặc định.

  3. Thư viện nào là tốt nhất để sử dụng là rất khó nói. Picasso, Glide và Imageloader là những thư viện được kiểm tra tốt và được kiểm tra tốt, tất cả đều dễ sử dụng với các cài đặt mặc định. Cả Picasso và Glide chỉ yêu cầu 1 dòng mã để tải hình ảnh và có một trình giữ chỗ và hình ảnh lỗi. Tùy chỉnh hành vi cũng không đòi hỏi nhiều công việc. Điều tương tự cũng xảy ra với Imageloader, cũng là một thư viện cũ hơn Picasso và Glide, tuy nhiên tôi chưa sử dụng nó nên không thể nói nhiều về việc sử dụng / tùy chỉnh hiệu năng / bộ nhớ nhưng nhìn vào readme trên github cho tôi cảm giác rằng đó cũng là tương đối dễ sử dụng và thiết lập. Vì vậy, trong việc lựa chọn bất kỳ thư viện nào trong số 3 thư viện này, bạn không thể đưa ra quyết định sai, đó là vấn đề sở thích cá nhân.Giống như SDK facebook vẫn chưa được phát hành chính thức trên mavenCentral Tôi chưa từng sử dụng facebook sdk kể từ năm 2014 và có vẻ như họ đã đưa phiên bản đầu tiên lên mạng trên mavenCentral vào tháng 8 năm 2014. Vì vậy, sẽ mất một thời gian trước khi chúng tôi có thể nhận được bất kỳ ý kiến ​​tốt về nó.

  4. giữa 3 thư viện tên tuổi lớn tôi nghĩ không có sự khác biệt đáng kể. Người duy nhất nổi bật là bích họa nhưng đó là bởi vì nó có cách tiếp cận khác và mới và chưa được thử nghiệm chiến đấu.


3
Nit nhỏ: có vẻ như SDK Facebook đã chính thức có sẵn dưới dạng AAR trên Maven Central trong một thời gian. developers.facebook.com/docs/android/
trộm

1
Để sửa lỗi, đã một lúc kể từ khi tôi sử dụng SDK facebook nên tôi đã không kiểm tra điều đó. Tuy nhiên, họ mất quá nhiều thời gian để đưa vào đó.
Aegis

1
Một năm sau khi đọc nó, tôi vẫn tự hỏi liệu tôi có nên sử dụng Frescoe hay không và tôi vẫn không thể hiểu tại sao tôi nên làm vậy. Trong khi Glide và Picasso hoạt động tốt, Frescoe chỉ cần bạn làm rất nhiều thứ mà nó trông không có giá trị và kích thước ....
frostymarvelous

Tôi muốn chỉ ra rằng bích họa có vấn đề về bộ nhớ: github.com/facebook/react-native/issues/8711
Fabian Zeindl

Tôi cũng đã trải qua các vấn đề về bộ nhớ với bích họa, thật không may, có vẻ như nó phải là bích họa hoặc lướt qua nếu bạn cần hỗ trợ gif hoạt hình. Ngoài ra FWIW đây là một liên kết đến một số chi tiết so sánh bổ sung.
Nick

63

Cả Glide và Picasso đều không hoàn hảo. Cách Glide tải một hình ảnh vào bộ nhớ và thực hiện bộ nhớ đệm tốt hơn Picasso, cho phép một hình ảnh được tải nhanh hơn nhiều. Ngoài ra, nó cũng giúp ngăn chặn một ứng dụng từ OutOfMemoryError phổ biến. Tải hình ảnh động GIF là một tính năng tiêu diệt được cung cấp bởi Glide. Dù sao Picasso giải mã một hình ảnh với chất lượng tốt hơn Glide.

Tôi thích cái nào hơn? Mặc dù tôi sử dụng Picasso trong một thời gian rất dài như vậy, tôi phải thừa nhận rằng bây giờ tôi thích Glide hơn. Nhưng tôi khuyên bạn nên thay đổi Định dạng Bitmap thành ARGB_8888 và để Glide lưu trữ cả hình ảnh kích thước đầy đủ và thay đổi kích thước trước. Phần còn lại sẽ làm công việc của bạn tuyệt vời!

  • Số lượng phương pháp của Picasso và Glide lần lượt ở mức 840 và 2678.
  • Kích thước của Picasso (v2.5.1) là khoảng 118KB trong khi kích thước của Glide (v3.5.2) là khoảng 430KB.
  • Glide tạo hình ảnh được lưu trong bộ nhớ cache cho mỗi kích thước trong khi Picasso lưu hình ảnh đầy đủ và xử lý nó, vì vậy khi tải, nó hiển thị nhanh hơn với Glide nhưng sử dụng nhiều bộ nhớ hơn.
  • Glide sử dụng ít bộ nhớ theo mặc định với RGB_565.

+1 Đối với Trình trợ giúp Picasso Palette .

Có một bài mà nói chuyện rất nhiều về Picasso vs Glide bài


Bài viết tuyệt vời. Tôi đang chuyển sang Glide bây giờ. Thậm chí tốt hơn Picasso không phải là những gì tôi có trong tâm trí. :)
Sufian

1
Một vấn đề tôi thấy là Glide yêu cầu API 10. Đó là một vấn đề vì tôi không thể bỏ hỗ trợ API 9 khỏi ứng dụng của mình. Nếu không chắc chắn là một cách tốt hơn để đi.
Sufian

Bạn có thể giải thích tại sao bạn sử dụng api 9? chỉ tò mò ...
Daniel Gomez Rico

Trừ khi tôi thiếu một cái gì đó, nó sẽ hỗ trợ tất cả các phiên bản Gingerbread.
Sufian

1
Tôi nghĩ đó là một chút chủ quan. Nhưng đó là một điều tốt hơn để hỗ trợ càng nhiều thiết bị / phiên bản càng tốt. Không? :)
Sufian

18

Tôi muốn chia sẻ với bạn một điểm chuẩn tôi đã thực hiện giữa Picasso, Universal Image Loader và Glide : https://bit.ly/1kQs3QN

Fresco đã ra khỏi điểm chuẩn vì đối với dự án tôi đang chạy thử nghiệm, chúng tôi không muốn cấu trúc lại bố cục của mình (vì chế độ xem Drawee).

Những gì tôi khuyên là Trình tải hình ảnh phổ quát vì khả năng tùy biến, tiêu thụ bộ nhớ và cân bằng giữa kích thước và phương thức.

Nếu bạn có một dự án nhỏ, tôi sẽ chọn Glide (hoặc thử Fresco).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.