2011-02-03 37 views
5

Tôi có một số tệp PNG tôi muốn chuyển đổi thành 256 màu (ví dụ như GIF). Mỗi hình ảnh có tính minh bạch, nhưng khi tôi cố gắng chuyển đổi, tôi luôn kết thúc bằng một nền đen trên hình ảnh kết quả.ImageMagick: làm thế nào để giảm bớt màu sắc nhưng giữ độ trong suốt?

Đây là lệnh hiện tại của tôi:

convert file.png -colors 255 file256.png 

Tôi đang sử dụng 255 màu sắc vì tôi đọc mà bạn cần một màu cho các kênh alpha (mặc dù tôi không nghĩ rằng nên áp dụng đối với PNG). Tôi đã thử nhiều tùy chọn khác như -background none, -channel RGBA-matte nhưng không có gì hoạt động cả.

Điều thú vị là, lệnh này đã làm công việc khi chuyển đổi sang gam màu xám:

convert file.png -channel RGBA -matte -colorspace gray file256.png 

Nó giữ nền trong suốt. Nhưng thay thế -colorspace gray bằng -colors 256 không hoạt động.

Trả lời

6

Lý do sử dụng 255 thay vì 256 màu là một màu cần được dành riêng cho độ trong suốt "nhị phân"/"boolean", tức là tất cả các pixel của màu đó được hiểu là hoàn toàn trong suốt. Có (thường) là không có những điều như một kênh alpha với 256-màu/bảng màu dựa trên hình ảnh. Để tham khảo, bạn có thể muốn đọc phần sử dụng ImageMagick về Color Quantization and TransparencyGIF Boolean Transparency. Điều đó nói rằng, điều này sẽ chuyển đổi PNG màu 32 bit thực của bạn với kênh alpha thành PNG 8 bit có bảng màu trong đó tất cả các pixel hoàn toàn trong suốt trong hình ảnh đầu vào cũng hoàn toàn minh bạch trong hình ảnh đầu ra:

convert file.png png8:file256.png 

png8 chỉ thị ImageMagick để viết GIF "8-bit được lập chỉ mục với tùy chọn nhị phân trong suốt" PNG và ngụ ý sử dụng 255 màu "thực".

0

Bạn đã thử không gian màu trong suốt để bảo tồn kênh Alpha?

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