2012-12-13 39 views
9
hình ảnh

Tôi desaturating với các bộ lọc này:Mobile Safari lọc màu xám thêm mờ

img { 
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); 
    filter: gray; 
    -webkit-filter: grayscale(1); 
} 

Nó hoạt động độc đáo, mặc dù các bộ lọc dường như pixellate hình ảnh trên di động Safari. Tôi không biết tại sao. Có một phương pháp bí mật để giữ lại sự rõ ràng? Hoặc tôi phải sống với thiếu sót trình duyệt này? Như một ví dụ, đây là một số ảnh chụp màn hình đặt cạnh nhau, lấy từ iOS Simulator:

With grayscale filter

Without filter

+0

Nó không phải là một câu trả lời nhưng có thể là một đầu mối: bộ lọc được rõ ràng được áp dụng cho các phi phiên bản đặc biệt của hình ảnh, có lẽ là khả năng tương thích (ví dụ, nếu nó là một hiệu ứng Gaussian blur thì sẽ có sự khác biệt trong bán kính mờ, và tôi đoán không có đủ logic để phân biệt). Có thể xứng đáng với Googling quanh dòng suy nghĩ đó - có lẽ một số thuộc tính sở hữu độc quyền mà bạn có thể chỉ định. – Tommy

+0

Bạn có nghĩa là nó đang chọn hình ảnh nguồn nhỏ hơn để tương thích? Đây là những hình ảnh nội tuyến. Nguồn cho mỗi hình ảnh giống nhau ở cả hai ảnh chụp màn hình. Các hình ảnh ban đầu có kích thước khoảng 300px, và được thu nhỏ lại để vừa với lưới. Lưới thay đổi kích thước để phù hợp với khung nhìn. –

+0

Tôi nghĩ rằng, thừa kế một số hành vi từ các thiết bị cũ hơn, Safari duy trì giả thuyết rằng bốn trong số các pixel thực tế của nó là 1px trong các thuật ngữ CSS. Vì vậy, tôi suy đoán rằng khi bạn áp dụng một bộ lọc, nó mặc định áp dụng điều đó với mỗi pixel của đầu vào là những gì nó giả vờ ở nơi khác là 1px, bởi vì một số bộ lọc dựa trên giả định đó. Hy vọng rằng có một lá cờ có thể ghi đè lên hành vi đó cho rằng bộ lọc của bạn rõ ràng không quan tâm có bao nhiêu pixel thực được chứa trong 1px. – Tommy

Trả lời

0

Tôi không biết liệu Safari di động được chọn lên các phong cách lọc hoặc -webkit-lọc.

Tôi không tin rằng bộ lọc -webkit cho phép bạn chỉ định độ phân giải bộ lọc, vì vậy nếu bạn muốn vượt quá hành vi mặc định này, bạn phải thêm bộ lọcRes = 400 vào định nghĩa bộ lọc hoặc thay thế là để nội tuyến svg và chỉ định một filterRes rõ ràng cho bộ lọc của bạn aka.

<svg> 
    <defs> 
    <filter id="greyscale" filterRes="1278"> 
     <feColorMatrix etc...> 
    </filter> 
    </defs> 

Images... 

</svg> 
Các vấn đề liên quan