ใน Inkscape ให้ปรับขนาดทั้งเอกสารและเนื้อหาในเวลาเดียวกัน


25

ฉันได้พยายามดิ้นรนเพื่อทำสิ่งที่ดูเหมือนพื้นฐานดี:

ใน Inkscape ฉันจะปรับขนาดเอกสารและเนื้อหา (เช่นภาพวาด) ในเวลาเดียวกันได้อย่างไร

บริบทเล็กน้อย: ฉันต้องการปรับขนาดเอกสาร SVG จำนวนมากจากThe Noun Project (โดยทั่วไปจะเป็นเอกสารขนาด 100x100px) โดยไม่ต้องปรับขนาดภาพวาดจริงอย่างชัดเจน

NB: หากมีโซลูชั่นบรรทัดคำสั่งฉันสามารถทำงานกับมันได้เช่นกัน!


ฉันไม่แน่ใจเกี่ยวกับเป้าหมายสุดท้ายของคุณ แต่ AFAIK พื้นที่เอกสารค่อนข้างอิสระนอกเหนือจากการพิมพ์ซึ่งคุณมีตัวเลือกที่จะพิมพ์เฉพาะพื้นที่เอกสาร อย่างไรก็ตามคุณสามารถพิมพ์เฉพาะพื้นที่วัตถุได้เช่นกันดังนั้นอาจเป็นวิธีที่จะหลีกเลี่ยงสิ่งกีดขวางได้
DA01

@ DA01 ฉันคิดว่าเอกสารมีประโยชน์มากเมื่อคุณส่งออกไปยังบิตแมป (ซึ่งเป็นสิ่งที่ฉันกำลังทำอยู่)
julien_c

มีวิธีการปรับขนาดวัตถุที่ไม่เกี่ยวข้องกับการลากมุม แต่ที่คุณจะระบุขนาดอย่างชัดเจนหรือไม่ นั่นอาจเป็นสิ่งที่ฉันตามมา :)
julien_c

1
แม้ว่ามันจะเป็นตัวเลือกโดยพลการ คุณสามารถวาดกล่องที่มีได้อย่างง่ายดายเพียงส่ง 'โซน' ของคุณ ในความเป็นจริงนั้นเป็นวิธีที่ฉันมักชอบทำ สำหรับการปรับขนาดคุณสามารถเลือกวัตถุของคุณจากนั้น a) ใช้แถบสถานะที่ด้านบนและพิมพ์การเปลี่ยนแปลงขนาดของคุณหรือ b) ไปที่ OBJECT> TRANSFORM และป้อนค่าใน Transform Pallet
DA01

@julien_c: ฉันคิดว่าจุดที่นี่คือวัตถุเป็นศิลปะแบบเวกเตอร์ตรงและไม่มีขนาดต่อ seจนกว่าคุณจะส่งออกไปยังอุปกรณ์แรสเตอร์ (หรือไฟล์) ขนาดของพวกเขา (นิ้ว, พิกเซล, ศอก) ไม่เกี่ยวข้อง
horatio

คำตอบ:


24

คุณไม่ได้พูดถึงระบบปฏิบัติการที่คุณใช้ ฉันใช้ Ubuntu และฉันสามารถใช้ librsvg2 ได้สำเร็จ

หากคุณสามารถเข้าถึง Ubuntu นี่คือสิ่งที่คุณสามารถทำได้ ก่อนอื่นให้ติดตั้ง librsvg2:

sudo apt-get install librsvg2-bin

จากนั้นcdไปยังไดเรกทอรีที่มี SVG ของคุณ (ตรวจสอบให้แน่ใจว่ามี SVG เท่านั้น!) และใช้คำสั่งดังนี้:

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/new.svg/')"
    rsvg-convert "$old" -w 160 -h 160 -f svg -o "$new"
done

สิ่งนี้จะสร้าง SVG ชุดใหม่ที่มีขนาด 200px คูณ 200px และบันทึกเป็น "original-file-name.new.svg"

การคำนวณมิติค่อนข้างสับสน สำหรับการแปลง SVG เป็น SVG คุณต้องทำการคำนวณทางคณิตศาสตร์เล็กน้อย ตัวเลือก "height" และ "width" ใน rsvg-convert ใช้ pt ไม่ใช่ px ในกรณีเช่นนี้ดังนั้นใช้ 80 ถ้าคุณต้องการ 100px, 120 ถ้าคุณต้องการ 150px และอื่น ๆ

คุณยังสามารถใช้ rsvg-convert เพื่อส่งออก PNG ได้อีกด้วย มันเป็นการดีกว่าในการ rasterizing ไฟล์มากกว่า ImageMagick อย่างน้อยก็ในประสบการณ์ของข้า แจ้งให้ทราบว่าคุณจะต้องมีการเปลี่ยนแปลง-fเพื่อให้pngคุณจะต้องเปลี่ยนการส่งออกบันทึกรูปแบบจาก's/svg$/new.svg/'ไป's/svg$/png/'และคุณป้อนความกว้างและความสูงที่คุณต้องการเป็นค่าพิกเซล

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/png/')"
    rsvg-convert "$old" -w 200 -h 200 -f png -o "$new"
done

โดยวิธีการที่ฉันแค่สมมติว่าคุณต้องทำเช่นนี้ในโหมดแบทช์กับ SVG จำนวนมาก หากไม่rsvg-convertเป็นเช่นนั้นคุณยังสามารถใช้ไฟล์ดังกล่าว: rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svgซึ่งจะใช้ไฟล์ต้นฉบับชื่อ "noun_project_1576" และเอียงเป็น 400px 200px และเปลี่ยนชื่อเป็น "noun_project_1576-skewed"
Ananda Mahto

@julien_c เพิ่งติดตาม: คุณลองใช้คำแนะนำนี้และมีโชคกับมันไหม?
Ananda Mahto

คัดลอกและวางโค้ดในเทอร์มินัล แต่ส่งคืน sed: -e expression # 1, ถ่าน 14: คำสั่ง unterminted 's' อาร์กิวเมนต์ที่หายไปสำหรับ -o ... คำแนะนำใด ๆ
raphie

ฉันเปลี่ยน `เป็น" และตอนนี้ฉันได้รับข้อผิดพลาดในการบันทึกเป็นไฟล์: echo svgfile.svg | sed -e 's / svg $ / 2.svg'
raphie

ที่ดี - it'll จะดียิ่งขึ้นเมื่อlibrsvg's ไหลข้อผิดพลาดข้อความได้รับการแก้ไข ...
Joce

7

ขณะนี้ไม่มีวิธีการดั้งเดิมใน Inkscape วิธีเดียวคือปรับขนาดเนื้อหาและเอกสารแยกต่างหาก


2

ในขณะที่มีไม่กี่วิธีที่จะทำ - ตามที่ระบุไว้ที่นี่ - viewBoxวิธีหนึ่งที่สามารถทำงานได้ดีจริงๆก็คือการใช้ คุณเพียงแค่ปรับเปลี่ยนเนื้อหาของแท็ก SVG ดังนี้:

<svg
 width="1280"
 height="800"
 viewBox="0 0 1280 800">
    <!-- More markup... --!>
</svg>

สิ่งที่viewBoxไม่สามารถจะกำหนดระบบพิกัดภายในสำหรับเอกสาร จากนั้นคุณสามารถปรับขนาดเอกสารได้อย่างง่ายดายเพียงแก้ไขwidthและheightคุณสมบัติตามที่จำเป็น

โปรดทราบว่ามีข้อเสียอยู่บ้าง สิ่งหนึ่งมีบริบทบางอย่างที่ใช้งานได้โดยเฉพาะอย่างยิ่งหากคุณกำลังรวมเอกสาร SVG ไว้ในหน้ามาร์กอัปของคุณโดยตรง การใช้<img>แท็กด้วยสิ่งนี้อาจหรือไม่อาจให้ผลลัพธ์ที่ไม่คาดคิด คุณจะต้องทำวิจัยของคุณเองเพื่อหาวิธีที่ดีที่สุดในการทำเช่นนี้


2
สิ่งนี้ไม่ได้ผลสำหรับฉันและฉันไม่เข้าใจว่าทำไม หากฉันแก้ไขความกว้างและความสูง แต่ปล่อยให้ viewBox เหมือนเดิม: เมื่อ Chrome แสดงผลไฟล์ svg แบบดิบมันจะแสดงเนื้อหาเพียงเล็กน้อยเท่านั้น เมื่อ Inkscape แสดงผลมันจะแสดงเนื้อหาทั้งหมด แต่ใหญ่กว่าหน้ามากซึ่งเป็นส่วนเล็ก ๆ (ซ้ายบน) ที่ Chrome แสดง ดังนั้นทั้งหมด: เนื้อหาไม่ได้ปรับตามพิกัดช่องมองภาพ SVG ของฉันมีองค์ประกอบลูก svg หลายอย่างในนั้น แต่ทั้งหมดจะถูกแปลงตาม (ฉันถือว่า) พิกัดช่องมองภาพ
CPBL

ทำงานให้ฉันใน Inkscape 0.92.3, Firefox 66 และ Chromium 73
Socowi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.