Làm cách nào tôi có thể chuyển đổi thư mục .pngs thành .jpg trong khi đặt màu nền?


10

Tôi có một thư mục các tập tin png có nền trong suốt. Tôi muốn chuyển đổi chúng từ dòng lệnh và duy trì nền trong suốt của hình ảnh.

Tôi đánh giá cao sự giúp đỡ.

Vì jpg không hỗ trợ độ trong suốt, vậy làm cách nào tôi có thể chỉ định giá trị hex của màu nền của jpg? Ngay bây giờ nó mặc định #ffffff? Tôi đã thử tập lệnh này, nhưng nó cho nền trắng jpgs đầu ra:

mogrify -quality 100 -format jpg *.png

Cập nhật

Tôi đã tạo các tệp png này trong inkscape. Tôi nên đề cập rằng mục tiêu của tôi trong việc chuyển đổi các png này sang jpg là để loại bỏ các cạnh lởm chởm trên các vật thể tròn hoặc góc. Các png hiện có các cạnh lởm chởm và tôi đọc rằng việc chuyển đổi chúng thành jpg có thể giải quyết vấn đề này. Tuy nhiên, chuyển đổi thông qua phương pháp được nêu trong câu trả lời của Christian Skjødt mang lại cho hình ảnh các cạnh lởm chởm thậm chí còn tệ hơn. Có cách nào để tôi có thể chuyển đổi pngs thành jpg và cũng có thể sử dụng khử răng cưa hoặc có thể là một kỹ thuật khác để thoát khỏi các cạnh lởm chởm? Cảm ơn đã giúp đỡ.


3
Thật khó để trả lời câu hỏi của bạn nếu nó luôn thay đổi ... Để tham khảo trong tương lai: Cố gắng đưa vào những gì bạn muốn đạt được trong câu hỏi của bạn ngay từ đầu. Re "cập nhật 2" của bạn: "Sự lởm chởm" chỉ đơn giản là kết quả của độ phân giải bạn đã chọn? Điều gì xảy ra nếu bạn tăng độ phân giải (số DPI trong hộp thoại "Xuất bitmap ...")?
Marcel Promotionberg

Câu trả lời:


3

Để làm mịn các cạnh, bạn có thể tạo các PNG lớn hơn gấp 10 lần kích thước mục tiêu của mình, sau đó thay đổi kích thước bằng khử răng cưa thành JPG. Tôi đã thực hiện điều này bằng cách sử dụng Python và Thư viện hình ảnh Python để có hiệu quả tốt, nhưng tôi không chắc làm thế nào để làm điều đó bằng các công cụ khác.


28

Định dạng JPEG không hỗ trợ độ trong suốt - do đó không thể duy trì nền trong suốt nếu bạn muốn (hoặc phải) sử dụng định dạng JPEG. Xem Wikipedia để biết tổng quan về các khả năng của các định dạng hình ảnh khác nhau.

Lưu ý rằng JPEG 2000 thực sự hỗ trợ độ trong suốt, nhưng nó ít phổ biến hơn nhiều so với định dạng JPEG. Nó phụ thuộc vào trường hợp sử dụng của bạn cho dù đây là một sự thay thế khả thi.


Tôi có thể sai, nhưng OP đang hỏi về việc cài đặt màu nào cho bất kỳ khu vực trong suốt nào được tạo ra. Chúng đang được làm trắng, nhưng OP có thể sử dụng màu xanh chẳng hạn.
nanofarad

16

Cho câu hỏi thứ hai của bạn:

Để chỉ định màu nền khi chuyển đổi hình ảnh của bạn, bạn có thể sử dụng -filltùy chọn:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png

Sử dụng -backgroundcung cấp kết quả tương tự. Dont quên -opaque none.


Này, cảm ơn vì đã giúp. Có cách nào để tôi có thể chống lại jpeg đầu ra thông qua lệnh này không? Xem cập nhật 2 ở trên để biết thêm bối cảnh. Cảm ơn.
James

4

Tôi xin lỗi không có cách nào, jpegđịnh dạng không hỗ trợ alpha channelvì vậy bạn không thể có sự minh bạch.


0

tùy thuộc vào những gì bạn đang cố gắng thực hiện với hình ảnh, có thể đặt kênh alpha thành hình ảnh thang độ xám hoặc bitmask riêng biệt và chương trình đang sử dụng hình ảnh sẽ áp dụng hình ảnh phụ làm giá trị mờ / trong suốt . Mặc dù cuối cùng tốt hơn là sửa đổi chương trình để nó hỗ trợ alpha png.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.