5

Tôi đang tạo một ứng dụng toàn cầu. Đối với một màn hình, tôi hiển thị 6 hình ảnh (định dạng png) trong lưới bằng cách sử dụng điều khiển this. Ngoài ra màn hình này hỗ trợ cả hướng dọc và ngang.Kích thước ứng dụng quá lớn vì có quá nhiều hình ảnh

Tôi đã tạo một bộ hình ảnh ở các độ phân giải khác nhau cho tất cả các iDevices và đặt tên cho chúng bằng cách sử dụng quy ước đặt tên chính xác như sau.

Và tôi phải tạo một tập hợp các hình ảnh này vì tôi hỗ trợ cả hướng và tôi không thể sử dụng các hình ảnh giống như trên vì cảnh quan sẽ kéo dài.

Bây giờ tôi có gần 60 hình ảnh chỉ cho một màn hình và ứng dụng đã nặng ~ 40MB! Nó đi mà không nói điều này là không thể chấp nhận.

Câu hỏi của tôi là cần tạo các hình ảnh riêng biệt cho tất cả các kích thước/thiết bị và định hướng này? Tôi không thể tạo một bộ chỉ để hiển thị võng mạc và nó sẽ giảm kích thước cho màn hình bình thường? Nếu không thể, có cách nào để thu nhỏ kích thước hình ảnh không?

Cảm ơn bạn.

+0

cùng vấn đề đang gặp phải ... –

+4

Hãy thử http://tinypng.org/ để giảm kích thước hình ảnh PNG. – Amar

+0

@Amar Cảm ơn. Tôi đang giữ hình ảnh thu hẹp như là lựa chọn thứ hai của tôi kể từ bây giờ. Bởi vì tạo ra rất nhiều hình ảnh là một công việc tẻ nhạt.Vì vậy, nếu có một cách để giảm điều đó, tôi sẽ rất tuyệt. Nếu không, tôi sẽ phải quay trở lại phương pháp nén. :) – Isuru

Trả lời

2

Không gây khó chịu, nhưng bạn nên làm hoặc ít nhất là cân bằng với các yếu tố khác. Vấn đề chính nếu bạn không liên quan đến bộ nhớ (RAM) vấn đề, hình ảnh lớn hơn mất rất nhiều không gian trong bộ nhớ và các thiết bị với độ phân giải thấp hơn có ít bộ nhớ hơn võng mạc. Vì vậy, thu hẹp không phải là lựa chọn tốt nhất.
Một giải pháp có thể sẽ có một hình ảnh "lớn" có thể được thay đổi kích cỡ cho những người khác. Để làm điều đó bạn cần vẽ lại ảnh bằng Core Graphics hoặc ImageIO, thư viện này có thể hữu ích NYXImagesKit. Tất nhiên có một giá phải trả:

  1. nó đòi hỏi thời gian tính toán
  2. nguồn "hình ảnh lớn" nên được mở ít nhất một lần để thực hiện tính toán, nếu bạn đã có trong ngắn bộ nhớ nó có thể là một vấn đề

Có một giải pháp khác cho các phần tử GUI (không chỉ), sử dụng hình ảnh vecto PDF. Bạn có thể tìm thấy một bài viết thú vị here by Matt Gemmel
Nếu hình ảnh của bạn không sử dụng kênh alpha đi kèm với jpg !!!!

+0

Hey Andrea, cảm ơn câu trả lời. Chỉ để kiểm tra nó, tôi chỉ sử dụng một tập hợp các hình ảnh mà tôi đã tạo ra để hiển thị võng mạc và chạy nó trong cả màn hình võng mạc và màn hình bình thường. Trong màn hình bình thường, nó sử dụng hình ảnh võng mạc và tôi không thấy bất kỳ vấn đề hoặc thay đổi. Có khó để phát hiện sự khác biệt trong giả lập iPhone không? Tôi có phải thử nghiệm trên thiết bị thực tế không? – Isuru

+0

Cũng không có thay đổi đáng chú ý, nếu bạn cung cấp một loại hình ảnh cho mỗi độ phân giải mà không vẽ lại chúng, hình ảnh chỉ đơn giản là strecthed. Vì trình mô phỏng có cùng phần cứng của máy Mac, bạn cũng sẽ không nhận thấy các vấn đề về bộ nhớ. Vấn đề có thể xảy ra khi chạy trên thiết bị thực, trên iPhone 3g 3gs tải hình ảnh võng mạc có thể lấp đầy RAM khá sớm và trong một số trường hợp nó có thể dẫn đến tai nạn – Andrea

+0

Tôi hiểu. Cảm ơn tất cả thông tin. :) – Isuru

3

Không cần tạo hình ảnh cho cả màn hình không phải võng mạc và võng mạc. Bạn chỉ có thể sử dụng "hình ảnh võng mạc" (nếu có thể, ở định dạng JPG). Khi bạn cần hiển thị hình ảnh có kích thước nhỏ hơn, bạn có thể sử dụng "phù hợp với khía cạnh" để thu nhỏ hình ảnh lớn hơn. Có thể có một số sự cân bằng chất lượng.

Tương tự, đối với hình ảnh iPhone 5, bạn có thể cắt bớt hình ảnh dài hơn bằng thuộc tính clipsToBounds để cắt các phần không mong muốn trong màn hình nhỏ hơn.