Thay đổi kích thước SVG

SVG là định dạng vector, nên nó độc lập với độ phân giải và luôn sắc nét ở mọi kích thước. “Thay đổi kích thước” một SVG không rasterize nó và không làm thay đổi hình vẽ: công cụ này chỉ đặt giá trị widthheight mới theo pixel trên phần tử gốc <svg>, tức là kích thước hiển thị được khai báo của nó. viewBox, các đường path và mọi tọa độ đều được giữ nguyên như cũ, nên hình vẽ giữ đúng tỉ lệ và không mất chất lượng. Hãy dán mã của bạn vào, đặt chiều rộng và chiều cao, xem trước kết quả rồi sao chép hoặc tải nó về.

Cách thay đổi kích thước một SVG

  1. 1

    Dán SVG

    Dán toàn bộ mã `<svg>...</svg>` vào ô văn bản.

  2. 2

    Đặt chiều rộng và chiều cao

    Nhập chiều rộng và chiều cao mới theo pixel.

  3. 3

    Xem trước trực tiếp

    Công cụ ghi lại `width` và `height` trên `<svg>` gốc (hoặc thêm chúng nếu còn thiếu) và hiển thị kết quả ngay lập tức.

  4. 4

    Sao chép hoặc tải về

    Sao chép mã đã cập nhật vào bảng nhớ tạm hoặc lưu nó thành tệp `.svg`.

Kích thước hiển thị so với viewBox

Một SVG có kích thước hiển thị (width/height) và hệ tọa độ riêng của nó (viewBox).

<svg width="200" height="200" viewBox="0 0 100 100">
    <circle cx="50" cy="50" r="40" />
</svg>

SVG này rộng 200 x 200 pixel trên màn hình, trong khi các tọa độ bên trong chạy từ 0 đến 100. Hình tròn với r="40" chiếm khoảng 80% viewBox, nên nó hiển thị rộng khoảng 160 px. Công cụ này chỉ thay đổi widthheight, tức là kích thước hiển thị được khai báo. Nó không đụng đến viewBox hay các tọa độ, và đó chính là lý do hình vẽ giữ đúng tỉ lệ và vẫn sắc nét: bạn đang bảo trình duyệt vẽ cùng một hình ở kích thước khác, chứ không phải vẽ lại nó.

Vì sao một SVG có thể trông y hệt sau khi bạn đổi kích thước

Nếu SVG được đặt bằng thứ gì đó như <img src="icon.svg" width="500"> hoặc được định cỡ bằng CSS, thì trang bao quanh sẽ kiểm soát kích thước hiển thị và ghi đè lên width/height trong tệp. Trong trường hợp đó, hãy đổi kích thước ở nơi SVG được dùng (thẻ <img>, CSS hoặc khối chứa), chứ không chỉ trong mã.

Nét vẽ và chữ vẫn sắc nét

Vì không có gì bị rasterize, chữ vẫn là chữ vector thật và các đường nét vẫn mượt ở mọi kích thước. Độ dày nét được định nghĩa trong hệ tọa độ, nên nó co giãn cùng với hình vẽ. Nếu bạn muốn một nét giữ nguyên độ dày hiển thị bất kể kích thước, hãy thêm vector-effect="non-scaling-stroke" vào phần tử đó trong nguồn của bạn trước khi thay đổi kích thước.

Giữ cho mã gọn gàng

Các SVG xuất ra từ Figma, Illustrator hay Sketch thường mang theo phần thừa: không gian tên của trình soạn thảo (sodipodi:, inkscape:), siêu dữ liệu ẩn và <defs> không dùng đến. Công cụ này giữ nguyên mã của bạn ngoài phần kích thước. Để loại bỏ phần thừa, hãy đưa tệp qua một trình tối ưu như SVGO trước hoặc sau khi thay đổi kích thước.

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

Không. Nó chỉ đặt widthheight trên <svg> gốc. viewBox, các đường path và mọi tọa độ đều được giữ nguyên, nên hình minh họa giữ đúng tỉ lệ của nó.

Thường thì trang mới là nơi kiểm soát kích thước: một thuộc tính width trên <img>, một quy tắc CSS hoặc một khối chứa đang ghi đè lên kích thước riêng của tệp. Hãy đổi kích thước ở nơi SVG được dùng, chứ không chỉ trong mã.

Có. SVG là định dạng vector, nên không có gì bị rasterize và chữ cùng nét vẽ vẫn sắc nét ở mọi kích thước. Nếu tệp nguồn đã chuyển chữ thành đường path, nó co giãn như bất kỳ hình dạng nào khác, và vẫn sắc nét.

Có. Chỉ widthheight được thay đổi; <animate>, <script>, các trình xử lý sự kiện và CSS bên trong SVG đều được giữ nguyên.

Mã được gửi đến máy chủ của chúng tôi để kết xuất bản xem trước đã đổi kích thước và không được lưu lại sau khi yêu cầu kết thúc. Nó không được lưu trữ hay chia sẻ.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác