Tôi có một trang web di động lợi dụng jQuery Mobile, tuy nhiên hình ảnh, thẳng thắn, trông giống như crap trên iPhone 4/4S. Tôi giả định như vậy sẽ đi cho "iPad mới" khi nó có sẵn vào cuối tuần này.Cách thích hợp để xử lý hình ảnh web hi-res cho màn hình hi-res (chủ yếu là màn hình võng mạc iOS) là gì?
Tôi biết điều này có liên quan đến tỷ lệ pixel và/hoặc hình ảnh DPI (hoặc PPI hoặc bất kỳ thứ gì bạn muốn gọi ... không tham gia thảo luận về điều đó). Tôi chỉ đơn giản muốn biết phương pháp tốt nhất để phục vụ hình ảnh web có độ phân giải cao cho các màn hình võng mạc iOS này là gì.
Lúc đầu, tôi nghĩ thay đổi hình ảnh DPI (trong Photoshop) sẽ giải quyết được vấn đề. Tôi đã lấy một số hình ảnh mẫu và thu nhỏ chúng xuống đến chiều rộng 190px. Tôi đã lưu một hình ảnh ở 72 DPI và một hình ảnh khác ở 200 DPI. Điều này không có hiệu lực. Xem cho chính bạn (trên iPhone 4/4S): http://haxway.com/restest/1.html Ảnh dưới cùng của mỗi hình ảnh là 200 DPI. Sau đó, thay vì lưu hình ảnh có độ phân giải cao 200 DPI, tôi đã lưu nó ở 72 DPI một lần nữa nhưng lần này tôi tăng chiều rộng (lên 528px) sao cho khi thu nhỏ lại chiều rộng 190px, nó sẽ ở ~ 200 DPI. Điều này dường như làm thủ thuật: http://haxway.com/restest/2.html Nếu bạn xem nguồn, bạn có thể thấy tôi đang buộc chiều rộng/chiều cao trên thẻ hình ảnh (<img src="w4.jpg" alt="" width="190" height="143">
).
Tuy nhiên, tôi không tin đây là giải pháp tốt nhất. Không sử dụng các thuộc tính chiều rộng/chiều cao để mở rộng ảnh hưởng đến hiệu suất hình ảnh khi thiết bị phải mở rộng hình ảnh thay vì chỉ tải nó (và không chạm vào nó nữa)? Sau khi một số nghiên cứu, có vẻ như có một số truy vấn phương tiện CSS như -webkit-min-device-pixel-ratio
[1] nơi bạn có thể sử dụng CSS khác nhau cho màn hình có độ phân giải cao và do đó tải hình ảnh có độ phân giải cao hơn trong CSS. Nhưng tôi cần nhắm mục tiêu các thẻ HTML <img>
. Một bài báo khác tôi đọc (xin lỗi đã mất liên kết) đề xuất sử dụng Javascript để hoán đổi hình ảnh "thông thường" với hình ảnh có độ phân giải cao. Điều đó nghe có vẻ điên rồ!
Có cách nào tốt hơn để thực hiện việc này không? Tôi nhận ra ý kiến có thể khác nhau về cách nào là "tốt nhất". Nếu các ưu/nhược điểm của mỗi phương pháp có thể được giải thích, điều đó sẽ rất tuyệt vời! Mục tiêu của tôi là sử dụng bất kỳ phương thức nào ám chỉ nhanh nhất (hy vọng không sử dụng một số Javascript bị hack, v.v.).
Cảm ơn!
[1] http://aralbalkan.com/3331
Mẫu của bạn hơi cá. Những gì trình duyệt làm, hiển thị hình ảnh pixel theo pixel. Được xem như vậy, hình ảnh của bạn giống nhau. Kích thước in của hình ảnh 200dpi chỉ nhỏ hơn một chút. Thay vào đó, nếu bạn tải lên cùng một hình ảnh ở độ phân giải cao hơn - chứa nhiều pixel hơn - bạn sẽ thấy các trình duyệt hiển thị hình ảnh lớn gấp 3 lần. Mà cũng không phải là những gì bạn muốn. – commonpike
... chính xác. Đó không phải là điều tôi muốn. Vậy làm thế nào đây là cách tiếp cận hiện tại "cá"? (Không có nghĩa là để tấn công ... chỉ tò mò.) –
xin lỗi nếu điều đó nghe có vẻ xúc phạm. Nó gây nhầm lẫn cho tôi: những gì bạn muốn, tôi giả định, là cùng một hình ảnh kích thước ở độ phân giải cao hơn. Nhưng thay vào đó, bạn đã tải lên hình ảnh nhỏ hơn ở độ phân giải cao hơn. Nếu trình duyệt * sẽ * tôn trọng dpi, các hình ảnh 200dpi bạn đã tải lên sẽ nhỏ hơn nhiều. (trong cả hai trường hợp, cảm ơn các hình ảnh thử nghiệm - bạn đã giúp tôi). – commonpike