2012-11-13 32 views
6

Tôi có các tệp PNG mà tôi muốn chuyển đổi toàn bộ hình ảnh thành nửa công khai. Hình ảnh sẽ được tham chiếu trong tệp KML dưới dạng lớp phủ biểu tượng để sử dụng trong Google Earth/Maps.Tạo một PNG bán trong suốt với ImageMagick trên Centos Linux

Các ví dụ sau đã được đề xuất cho tôi bằng cách sử dụng lệnh chuyển đổi ImageMagick, tuy nhiên dường như không hoạt động. Ví dụ đầu tiên dẫn đến lỗi, ví dụ thứ hai không thực hiện bất kỳ thay đổi quan sát nào đối với hình ảnh.

$ /usr/local/bin/convert 121112142121.png -channel Alpha -evaluate Set 50% 2121112142121.png 
convert: no decode delegate for this image format '121112142121.png' @ error/constitute.c/ReadImage/550. 
convert: option requires an argument '-evaluate' @ error/convert.c/ConvertImageCommand/1400. 

Phương pháp đề nghị thứ hai là thế này:

convert filename.png -fill '#00000080' -draw 'matte 100,100 reset' output.png 

Trong khi tôi có thể tìm thấy nhiều ví dụ trên web để tạo hình ảnh hoàn toàn minh bạch từ màu sắc cụ thể hoặc mặt nạ alpha, tôi dường như không thể tìm thấy bất kỳ hoạt động để tạo hình ảnh nửa trong suốt. Tôi muốn tìm một cách để làm điều này với lệnh chuyển đổi, hoặc với ImageMagick Perl.

ImageMagick phiên bản là 6.8.0-4.

Trả lời

12

Nghị quyết đã được tìm thấy:

convert input.png -alpha set -channel A -evaluate set 50% output.png 

Các lệnh trên làm cho toàn bộ hình ảnh (tất cả các màu) bán trong suốt.

Một vấn đề khác mà tôi có là phiên bản mới nhất của ImageMagick được biên dịch từ nguồn mà không cần cài đặt tất cả các thư viện hình ảnh mới nhất (cụ thể là libpng). Hãy chú ý đến đầu ra của cấu hình để đảm bảo libpng được tìm thấy nếu biên dịch từ nguồn. Nó cũng xuất hiện rằng các phiên bản của ImageMagick sớm hơn 6.6 và/hoặc các phiên bản cũ hơn của libpng có thể không hỗ trợ thế hệ png trong suốt.

+8

Bạn cũng có thể sử dụng '-evaluate Divide 2' nếu bạn muốn làm cho nó độc lập với hình ảnh gốc (chỉ cần gấp đôi độ trong suốt cho tất cả các pixel). – caw

+6

Vấn đề với cách tiếp cận này là nếu bạn đã có các điểm ảnh trong suốt hoàn toàn trong hình ảnh, độ trong suốt của chúng dường như thay đổi cũng như làm cho chúng trong suốt màu đen: (Bất kỳ ý tưởng nào? –

0

Để theo dõi nhận xét của Tony Bogdanov. Nếu bạn đã có pixel hoàn toàn trong suốt, bạn có thể muốn sử dụng các chiến lược sau:

1.) chuyển đổi các điểm ảnh trong suốt vào một mặt nạ

convert -alpha extract input.png mask.png

2.) thực hiện các lệnh được liệt kê trong câu trả lời trên :

convert input.png -alpha on -channel a -evaluate set 65% output.png

3.) tạo ra một khung trống kích thước tương tự như hình ảnh ban đầu

dụ: convert -size 700x800 xc:none blankcanvas.png

4.) tổng hợp hình ảnh bán trong suốt và khung trống lại với nhau bằng cách sử dụng mặt nạ điểm ảnh trong suốt

composite output.png blankcanvas.png mask.png -compose Src final_output.png

4
convert input.png -alpha set -channel A -evaluate Divide 2 output.png 

Cảm ơn bạn @caw cho trỏ này ra trong bình luận của bạn. Điều này giúp trong trường hợp hình ảnh đã có một số điểm ảnh trong suốt. -evaluate set 50% làm hỏng các pixel đã có trong suốt có alpha 0, đặt alpha thành 50%, thường không mong muốn.

-evaluate Divide 2 giữ nguyên alpha vì pixel hoàn toàn trong suốt là alpha 0 và 0 chia cho 2 vẫn bằng 0.

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