2008-11-14 10 views
5

Tôi đang làm việc trên một trang web sử dụng nhiều tệp png24 để minh bạch.Làm cách nào để bạn biết png8 từ png24

Tôi cần thay thế chúng bằng các tệp png8, vì tất cả giải pháp khắc phục kiểu png khắc phục javascript cho png24 khiến IE6 bị khóa ngẫu nhiên.

Xem liên kết này để có được một ý tưởng về màn triệu chứng IE6 - http://blogs.cozi.com/tech/2008/03/transparent-pngs-can-deadlock-ie6.html

Có ai biết một cách dễ dàng nhắm mục tiêu các file png24 hiện có, thay thế chúng bằng các png8s?

Tôi đang sử dụng OS X và các trình duyệt tệp như cầu Adobe không hiển thị thông tin này hoặc tôi cũng không thể tìm thấy thông tin trên dòng lệnh hoặc công cụ tìm.

Trợ giúp!

Trả lời

7

Tiện ích file trên OSX có thể cho bạn biết độ sâu màu trong một tập tin PNG, ví dụ:

% file foo.png 
foo.png: PNG image data, 1514 x 1514, 8-bit grayscale, non-interlaced 
0

Có lẽ imagemagick sẽ giúp bạn chuyển đổi tệp png24 thành tệp png8.

1

Tôi nghĩ rằng bạn có thể đặt ra câu hỏi sai. PNG8s không có alpha thực sự bạn đã làm việc chăm chỉ để sửa lỗi trong IE6. Nếu bạn thay thế PNG24 bằng PNG8, bạn không thể thay thế chúng bằng GIFs.

Có thể bạn có thể thử nghiệm một kịch bản thay thế/sửa lỗi thay thế - có một số mã gây sốc xấu ở đó, có thể đó là vấn đề ở đâu?

Đây là (và tôi nói lưỡi này trong má!) the right question.

+2

PNG-8 thực sự hỗ trợ lưu trữ giá trị alpha với mọi màu trên vòm miệng, vì vậy, với chương trình và tối ưu hóa, chúng có thể trông tuyệt vời. Xem một trong các câu trả lời khác. –

+3

PNG8 không giống với GIF, vì PNG8 có thể lưu trữ các pixel bán trong suốt, nơi GIF không thể. Photoshop không có khả năng này (khi cố gắng Save for Web), nhưng nó rất rõ ràng khi bạn sử dụng Fireworks để xuất dưới định dạng PNG8. – RussellUresti

1

JoeBloggs là đúng, bạn đang đặt câu hỏi sai.

Tôi chưa từng thoát IE6 với tập lệnh pngfix tốt. Bạn đã có một kịch bản pngfix xấu, hoặc một cài đặt IE6 xấu.

PNG8 sẽ làm hỏng độ trong suốt đẹp mắt của bạn và làm cho nó trông giống như bạn đang sử dụng GIF.

3

Bạn thực sự CÓ THỂ nhận được độ trong suốt alpha trong PNG-8 nhưng siêu phức tạp. http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/ http://www.personal.psu.edu/drs18/blogs/davidstong/2007/09/png8_alpha_transparency_from_f.html

Về cơ bản, nó tạo GIF như chất cho IE6 và PNG thực với độ trong suốt alpha cho trình duyệt tốt hơn. Đó là một con đường suy thoái dễ chịu hơn. Ngay bây giờ, tôi nghĩ bạn cần Fireworks, nhưng tôi đang khám phá các lựa chọn khác.

2

Để thêm vào câu trả lời của Alnitak, một khi bạn tìm thấy tất cả PNG24 bạn muốn chuyển đổi, bạn có thể hàng loạt tất cả chúng với pngquant:

pngquant -v -f --ext .png 256 *.png 

này chuyển đổi tất cả các file PNG để PNG8 tại chỗ, ghi đè lên chúng.

+0

Lưu ý rằng điều này chuyển đổi PNG RGBA 32 bit sang PNG có kích thước 8 bit hoặc nhỏ hơn * RGBA. Bạn có thể kiểm tra bảng màu bằng cách chạy 'pngcheck * .png'. Nếu bạn hoàn toàn cần một bảng màu 8-bit vì lý do nào đó, hãy xem [câu trả lời này] (https://stackoverflow.com/a/1468389/96656). –

+0

@MathiasBynens AFAIK ImageMagick cũng có tính năng đếm màu, vì vậy (ngoài chất lượng thấp hơn), nó không khác gì so với pngquant khi ảnh kết thúc chỉ cần 4 hoặc 2 bit. – Kornel

+0

Tôi đã thử nghiệm điều này trước khi đăng bình luận trước đó của tôi. [Hình ảnh ví dụ này] (https://tibiamaps.github.io/tibia-map-data/minimap-with-markers/Minimap_Color_32000_32000_7.png) chuyển từ 32-bit RGB + alpha sang bảng màu 8 bit bằng cách sử dụng 'chuyển đổi' , trong khi 'pngquant' tối ưu hóa nó thành bảng màu 4 bit. (Trong 99% của tất cả các trường hợp sẽ được mong muốn, tuy nhiên tôi có trường hợp sử dụng kỳ lạ này, nơi tôi cần một bảng màu chính xác là 8-bit.) –

1

pngcheck, một công cụ dòng lệnh, có thể đổ thông tin bạn cần. http://www.libpng.org/pub/png/apps/pngcheck.html

pngcheck.exe a.png 
OK: a.png (1024x1024, 32-bit RGB+alpha, non-interlaced, 80.7%). 

pngcheck.exe b.png 
OK: b.png (1024x1024, 8-bit palette+trns, non-interlaced, 83.1%).