2013-06-11 50 views
5

Tôi đang phát triển một trang web trên thiết bị di động sử dụng thẻ IMG để hiển thị tệp SVG. Tệp SVG có dung lượng khoảng 500 kB. Hình ảnh hiển thị OK trong các phiên bản Android của Firefox và Chrome. Tuy nhiên, trong iOS Safari, tôi chỉ nhận được một hộp màu xanh nhỏ đáng sợ với một dấu chấm hỏi trong đó.Giới hạn kích thước tệp SVG cho iOS Safari

Tôi biết rằng có giới hạn về kích thước tệp hình ảnh trong iOS. Theo số điện thoại Safari Web Content Guide:

Kích thước tối đa cho ảnh GIF, PNG và TIFF được giải mã là 3 megapixel cho các thiết bị có RAM dưới 256 MB và 5 megapixel cho các thiết bị có RAM lớn hơn hoặc bằng 256 MB.

Tức là, đảm bảo chiều rộng * chiều cao ≤ 3 * 1024 * 1024 cho các thiết bị có RAM dưới 256 MB. Lưu ý rằng kích thước đã giải mã lớn hơn rất nhiều so với kích thước được mã hóa của một hình ảnh.

Tôi tưởng tượng rằng có một số giới hạn về kích thước của tệp SVG, nhưng vì chúng được vector hóa, không thực sự có ý nghĩa khi mô tả kích thước của chúng theo pixel được giải mã. Có ai biết giới hạn của các tệp SVG được xác định không?

P.S. Khi tôi đặt trình duyệt tệp SVG trực tiếp thay vì thông qua một trang HTML, tôi có thể xem hình ảnh. Tôi cũng có thể xem tập tin SVG bên trong một IFRAME. Nhưng không sử dụng thẻ IMG.

+0

Phía sau hậu trường, trình duyệt sẽ vẫn hiển thị các vectơ và coi nó là một bitmap với thẻ hình ảnh, do đó các ràng buộc giống nhau sẽ áp dụng. Kích thước của SVG của bạn là gì? Bạn đã nhúng dữ liệu-uris trong SVG của bạn? – Duopixel

+0

Trong trường hợp của tôi, kích thước của tệp SVG được hiển thị được xác định từ kích thước của khung nhìn. Trên iPhone, nó sẽ giống như 600x600. Trên iPad, nó sẽ giống như 1500x1500. Theo tính toán của tôi, các kích thước này vẫn tuân theo các giới hạn mà tôi đã đăng ở trên. –

+0

Đúng, những thứ nguyên đó sẽ không khiến bạn gặp rắc rối, vì vậy bạn có thể loại bỏ điều đó. Tuy nhiên, 500 KB cho một hình ảnh vector là quá nhiều, bạn có hình ảnh bitmap nhúng? – Duopixel

Trả lời

7

Tôi đã thực hiện một số tệp SVG thử nghiệm với các kích thước khác nhau. Họ trông giống như thế này:

<?xml version="1.0"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg width="2000" height="2000" xmlns="http://www.w3.org/2000/svg"> 
    <text x="100" y="100" font-size="50">2000x2000</text> 
</svg> 

Sử dụng BrowserStack để mô phỏng iPhone 5 và iPad thế hệ thứ ba, tôi nhận thấy điểm cố định nằm trong khoảng từ 2200x2200 đến 2400x2400 pixel. Giới hạn 5 megapixel tương ứng với hình ảnh có kích thước 2289x2289, vì vậy điều này phù hợp với Duopixel's comment cho biết kích thước được hiển thị là quan trọng.

+0

Cần lưu ý rằng nó phải là tổng diện tích, không chỉ chiều rộng/chiều cao, bởi vì tôi có một bản đồ SVG cao 400px và đã được tốt với chiều rộng 12.000px, nhưng một khi nó đã vượt quá 12.000px nó đã phá vỡ. Tôi định dạng lại nó cho định dạng hình vuông và nó đã kết thúc là 2886px x 2405px, tạo ra kết quả tương tự như SVG 400px x 12.000px. – Brian

Các vấn đề liên quan