SVG memiliki properti ini, yang menentukan ukurannya:
width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"
Saya ingin skala SVG yang diberikan ke dengan dengan 400pt
oleh baris perintah tanpa melanggar aspek rasio. Ini berarti, ketiga nilai di atas harus diubah dengan benar dan semua poin dalam kode svg berikut. Saya tidak ingin mengubah hanya ukuran kanvas, tetapi seluruh ukuran gambar svg. Dan saya tidak ingin melakukannya dengan GUI / dengan tangan, tapi saya ingin melakukannya dengan CLI.
Bagaimana saya bisa secara otomatis skala SVG oleh baris perintah ke lebar yang diberikan?
Alasan: Pratinjau Wikipedia terlihat buruk jika gambarnya terlalu kecil. Lihat gambar ini sebagai contoh.
Bagaimana saya akan melakukan tugas ini dengan Inkscape-GUI
- Shift + Ctrl + M (Transform)
- Skala (centang "skala proporsional")
- Masukkan lebar
- Shift + Ctrl + D (Properti dokumen)
- Sesuaikan halaman dengan pilihan
Sekarang saya ingin CLI-cara otomatis untuk melakukan ini.
Omong-omong, inkscape hanya diterapkan
<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
id="surface0">
ke seluruh gambar.
sumber
width
,height
danviewBox
nilai-nilai untuk sesuatu sepertiwidth="100%" height="100%" viewBox="0 0 400 212.58569"
.sed
pada jawaban @ terdon). Satu masalah yang mungkin Anda temui adalah bahwa nilainya perlu berbeda dengan file .svg lain yang Anda ingin lakukan hal yang sama.Jawaban:
rsvg-convert
darilibrsvg2-bin
paket dapat mengubah ukuran svg.Lihat jawaban ini untuk instruksi lengkap.
sumber
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svg
bekerja. Tetapi rsvg-convert tampaknya tidak hanya mengubah ukuran.rsvg-convert --help
tidak memberikan petunjuk apa pun.Jika Anda hanya ingin mengubah satu gambar, buka di editor teks (misalnya emacs) dan ubah entri lebarnya.
Untuk geekier, pendekatan CLI saja, gunakan sed:
Ini tidak akan mengubah skala gambar, hanya mengatur lebarnya.
Cara yang lebih baik, mungkin, tetapi tentu saja yang dapat dijalankan dalam mode batch untuk banyak gambar menggunakan inkscape dari baris perintah:
Untuk banyak file (dengan asumsi Anda ingin semuanya memiliki lebar yang sama), lakukan hal berikut. Dibutuhkan konversi ke png dan menganggap tidak ada spasi di nama file Anda:
Konversi ImageMagick adalah pilihan pertama saya tetapi tampaknya rusak ketika menskala svgs.
sumber