PerfectVector
Bởi Irene Kim8 phút đọc

Xuất bằng dòng lệnh Inkscape: Trang, hình hay đối tượng

Chọn giới hạn trang, hình vẽ hoặc đối tượng khi xuất PNG bằng dòng lệnh Inkscape. So sánh đầu ra thực tế, tạo hai kích thước và giữ nguyên bản SVG gốc.

Trên trang này

Khi xuất PNG bằng dòng lệnh Inkscape, hãy chọn vùng trước: --export-area-page giữ khung trang, --export-area-drawing ôm sát hình vẽ và --export-id nhắm đến giới hạn của một đối tượng. Thêm --export-id-only khi đầu ra chỉ nên hiện đối tượng đó. Hướng dẫn dòng lệnh Inkscape phân biệt việc cắt theo đối tượng với việc ẩn các đối tượng khác.

Sau đó đặt rõ chiều rộng đầu ra, độ trong suốt và tên tệp. Những lựa chọn này giúp một lô tệp bàn giao nhỏ dễ kiểm tra và lặp lại hơn.

Điều gì thay đổi trong các bản xuất thử

Chúng tôi tạo SVG 600 × 360 với hai đối tượng có tên: huy hiệu xanh lá và mảng màu san hô chồng lên mép phải của nó. Trang có nhiều khoảng trống. Giới hạn của toàn bộ hình vẽ là 400 × 180 đơn vị; riêng huy hiệu là 180 × 180.

Chúng tôi xuất nguồn bằng ứng dụng Inkscape 1.4.4 macOS arm64 chính thức, dùng tệp thực thi dòng lệnh của nó. Cả bốn bản xuất dưới đây đều yêu cầu chiều rộng 600 pixel và nền trong suốt.

Lựa chọn xuấtĐầu ra trong phép thửNội dung nhìn thấy
Vùng trangPNG 600 × 360Cả hai đối tượng cùng khoảng đệm của trang.
Vùng hình vẽPNG 600 × 270Cả hai đối tượng trong vùng cắt sát hơn.
ID huy hiệuPNG 600 × 600Huy hiệu cùng một phần mảng màu chồng lấp.
ID huy hiệu với --export-id-onlyPNG 600 × 600Chỉ huy hiệu.
Vùng xuất và khả năng nhìn thấy đối tượng
Các bản xuất PNG Inkscape thực tế so sánh khoảng đệm trang, giới hạn hình vẽ sát, vùng cắt đối tượng có mảng màu chồng lấp và huy hiệu được tách riêng
Đầu ra Inkscape 1.4.4 thực tế từ một SVG. Các bản xem trước được co giãn vừa từng khung; nền ô bàn cờ nằm phía sau các PNG trong suốt.

Đối tượng tách riêng trông lớn hơn nhiều bên trong PNG vì chúng tôi vẫn yêu cầu chiều rộng 600 pixel cho giới hạn hẹp hơn của nó. Chiều rộng đầu ra nhất quán không đồng nghĩa tỷ lệ hình nhất quán khi vùng xuất thay đổi.

Những ví dụ này dùng SVG một trang với hình thông thường. Chúng không kiểm tra lựa chọn nhiều trang, bộ lọc hay ảnh liên kết.

Tạo nguồn với ID đối tượng ổn định

Lưu đoạn sau thành master.svg. ID nhóm badge cho phép lệnh xuất cả vòng tròn và đường dẫn của nó cùng nhau. Đối tượng thứ hai, swatch, chủ động đi qua giới hạn huy hiệu.

<svg xmlns="http://www.w3.org/2000/svg"
     width="600" height="360" viewBox="0 0 600 360">
  <g id="badge">
    <circle cx="150" cy="160" r="90" fill="#236f62"/>
    <path d="M150 89L190 160L150 231L110 160Z" fill="#cde0a4"/>
    <path d="M150 115L175 160L150 205L125 160Z" fill="#236f62"/>
  </g>
  <rect id="swatch" x="200" y="140" width="260" height="80"
        rx="12" fill="#d68462"/>
</svg>

Với thiết kế hiện có, kiểm tra các ID trong SVG trước khi viết mã xuất. Tên đối tượng mà trình chỉnh sửa hiển thị có thể khác XML id mà lệnh sử dụng. Hướng dẫn chỉnh sửa SVG của chúng tôi giải thích cách kiểm tra và đổi mã mà vẫn giữ bản sao lưu.

Xuất trang, hình vẽ và huy hiệu riêng

Các lệnh dưới đây dùng cú pháp Bash hoặc Zsh. Chạy từ thư mục chứa master.svg. Trước hết, trỏ một biến shell đến tệp thực thi Inkscape:

inkscape_bin=inkscape
mkdir -p exports

Thiết lập đó giả định inkscape có trên PATH. Với ứng dụng macOS cài đặt thông thường, giá trị có thể là /Applications/Inkscape.app/Contents/MacOS/inkscape. Đặt đường dẫn trong dấu nháy khi gán nếu vị trí chứa dấu cách.

Cho toàn bộ trang:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-area-page \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/page.png

Cho vùng cắt quanh hình vẽ:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-area-drawing \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/drawing.png

Cho riêng huy hiệu:

"$inkscape_bin" --batch-process master.svg \
  --export-type=png --export-id=badge --export-id-only \
  --export-width=600 --export-background-opacity=0 \
  --export-filename=exports/badge.png

Để tái lập mẫu đối chứng chồng lấp trong hình, xóa --export-id-only khỏi lệnh cuối và đổi tên đầu ra. Mảng san hô lúc đó xuất hiện trong vùng cắt của huy hiệu. Chỉ chọn vùng cắt bằng ID không tự tách riêng hình.

Sổ tay Inkscape mô tả các cờ này. --export-width đặt chiều rộng bitmap bằng pixel và ghi đè thiết lập DPI. Tỷ lệ khung hình của bản xuất xác định chiều cao tương ứng. Chúng tôi dùng một lựa chọn vùng cho mỗi lệnh và đường dẫn đầu ra .png rõ ràng.

Chúng tôi đưa --batch-process vào các lệnh đã thử. Trong lần chạy trên macOS này, xuất không có cờ đó ghi được PNG nhưng để tiến trình tiếp tục chạy; các lệnh trên kết thúc bình thường. Cờ này khác với vòng lặp shell yêu cầu nhiều kích thước.

Tạo hai kích thước mà không thay bản gốc

Để tạo một cặp PNG giữ khung trang, lặp lại cùng thiết lập phạm vi và chỉ đổi chiều rộng cùng tên đầu ra:

for export_width in 240 480; do
  "$inkscape_bin" --batch-process master.svg \
    --export-type=png --export-area-page \
    --export-background-opacity=0 \
    --export-width="$export_width" \
    --export-filename="exports/page-${export_width}.png" || exit 1
done

Lần chạy của chúng tôi tạo PNG 240 × 144 và 480 × 288. Cả hai giữ cùng khung trang và nền trong suốt. Giá trị băm SHA-256 của master.svg khớp trước và sau xuất, nên dữ liệu nguồn không thay đổi trong phép thử này.

Dùng tên đầu ra xác định nguồn, vùng và kích thước khi mở rộng thành tác vụ lớn hơn. Giữ các lệnh trong đoạn mã cạnh tệp nguồn để có thể tái lập lựa chọn sau này. Kiểm tra những đầu ra đầu tiên trước khi chạy cả thư mục hình lớn.

Kiểm tra tệp trước khi bàn giao

Kiểm tra cả kích thước lẫn nội dung nhìn thấy. Lệnh thành công vẫn có thể xuất sai vùng cắt, phần chồng lấp không mong muốn hoặc khoảng đệm nhiều hơn dự định.

  • Lề trống lớn: so sánh bản xuất trang và hình vẽ. Chọn khung mà đích đến yêu cầu.
  • Đối tượng khác xuất hiện trong vùng cắt theo ID: kiểm tra xem bạn có cần --export-id-only không.
  • Độ trong suốt trông như màu trắng trong trình xem: mở PNG trên nền tương phản. Đối tượng nền trắng trong nguồn là một phần của hình và vẫn hiện ngay cả khi nền xuất trong suốt.
  • Hình trông lớn hơn giữa các đầu ra: so sánh vùng xuất cùng chiều rộng pixel.

Hướng dẫn xuất PNG của Inkscape giải thích các khái niệm trang, hình vẽ, vùng chọn và nền phía sau những lựa chọn này. PNG là tệp bàn giao raster, nên giữ SVG để chỉnh sửa. Xem hướng dẫn tệp SVG nếu cần kiểm tra nguồn thực sự chứa gì.

Nếu bạn đang so sánh một cách tự động hóa khác, hướng dẫn SVG sang PNG bằng Sharp của chúng tôi trình bày trình kết xuất và quy trình kích thước của thư viện đó. Các tùy chọn API của nó không chuyển trực tiếp sang Inkscape.

Nếu hình nguồn chỉ có PNG hoặc JPG, công cụ vector hóa ảnh của PerfectVector có thể chuẩn bị hình vector chỉnh sửa được trước giai đoạn xuất này. Kiểm tra đường dẫn khôi phục trong trình chỉnh sửa, rồi chọn khung trang và ID đối tượng. Quy trình Trace Bitmap của Inkscape là một cách chuẩn bị khác. SVG đã có những đường dẫn cần thiết có thể chuyển thẳng sang xuất.

Câu hỏi thường gặp

Vì sao xuất trang và hình vẽ cho kích thước khác nhau? Giới hạn của chúng có thể có tỷ lệ khác nhau. Trong phép thử của chúng tôi, cả hai yêu cầu chiều rộng 600 pixel, nhưng trang 600 × 360 tạo PNG cao hơn giới hạn hình vẽ 400 × 180.

Vì sao export-id vẫn chứa đối tượng khác? Nó chọn giới hạn xuất của đối tượng đích. Hình khác đi qua giới hạn đó vẫn có thể hiện. Thêm export-id-only khi muốn ẩn các đối tượng khác.

Lô PNG này có ghi đè nguồn SVG không? Các lệnh được trình bày đọc master.svg và ghi PNG với tên riêng. Giá trị băm nguồn của chúng tôi không đổi sau phép thử. Giữ bản gốc và tệp bàn giao riêng, đồng thời kiểm tra mọi thao tác chỉnh sửa hoặc lưu bổ sung trước khi thêm chúng vào đoạn mã.

Nguồn tham khảo

  1. Inkscape Wiki — Sử dụng dòng lệnh — Quy trình xuất và khác biệt giữa cắt theo đối tượng với đầu ra chỉ có đối tượng đó.
  2. Inkscape — Sổ tay dòng lệnh — Tùy chọn vùng, đối tượng, kích thước, nền và đầu ra.
  3. Hướng dẫn Inkscape cho người mới — Xuất tệp PNG — Khái niệm vùng xuất và độ trong suốt.

Nếu hình vẫn cần đường dẫn vector, hãy vector hóa ảnh và kiểm tra kết quả trước. Sau đó lưu bản SVG gốc, chọn một phạm vi xuất và xác minh vùng cắt cùng kích thước PNG đầu tiên trước khi lặp lại cho cả lô.

Thêm từ blog

Bắt đầu với SVG gọn sạch hơn
và dễ chỉnh sửa hơn