Chuyển SVG sang PNG
Tải lên một tệp SVG và nhận lại ảnh PNG giữ nguyên các vùng trong suốt, dữ liệu pixel được lưu không mất mát. Có một điều cần kiểm tra trước: kích thước ảnh đầu ra lấy từ width và height viết trong chính tệp SVG, vì trang này không có tùy chọn độ phân giải hay tỷ lệ phóng.
Đã bắt đầu tải xuống!
Bạn đánh giá trải nghiệm của mình với MiConvert như thế nào?
Vì sao cần chuyển SVG sang PNG?
SVG không phải là một tệp ảnh theo nghĩa thông thường. Đó là một tài liệu XML mô tả các hình khối, đường path, gradient và chữ, và cần một bộ kết xuất vẽ ra. Cách đó hoạt động tốt trong các trình duyệt hiện đại và trong trình chỉnh sửa vector, nhưng gần như thất bại ở mọi nơi khác: phần lớn ứng dụng email loại bỏ nó, rất nhiều CMS và trình tải lên của các sàn thương mại từ chối thẳng SVG vì XML có thể chứa script, các ứng dụng Office xử lý không nhất quán, và nhiều thư viện ảnh trên điện thoại không hiển thị gì cả. PNG là định dạng raster mà chính những nơi đó chấp nhận, và khác với JPG, nó có kênh alpha thật sự - đúng thứ mà ảnh logo và icon thường phụ thuộc vào.
Ở trang này, tệp được gửi tới máy chủ của chúng tôi, nơi librsvg (thông qua libvips/sharp) vẽ tài liệu và PNG được ghi với dữ liệu pixel không mất mát ở mức nén 6. Kích thước kết xuất chính là kích thước khai báo trên phần tử svg gốc. Nếu tệp không có width và height, đơn vị trong viewBox sẽ trở thành pixel, nên viewBox="0 0 40 20" cho ra ảnh 40 x 20. Các tệp xuất từ Inkscape đôi khi dùng tiền tố xlink:, sodipodi: hoặc inkscape: mà không khai báo, khiến các bộ phân tích nghiêm ngặt báo lỗi; những khai báo đó được sửa tự động trước khi kết xuất sang PNG.
Những gì được giữ lại: hình học, màu tô, nét vẽ, gradient, vùng cắt và kênh alpha, tất cả chuyển thành pixel. Những gì mất đi: bản thân các vector, nên sau đó không thể phóng to PNG mà không bị mềm nhòe. Không có profile ICC hay metadata nào được ghi vào PNG. Chữ được vẽ bằng các phông chữ mà bộ kết xuất có sẵn, nên một họ phông chỉ được tham chiếu theo tên có thể bị thay thế và hình dạng chữ sẽ thay đổi. Nếu bản vẽ ra trống vì nó phụ thuộc vào stylesheet, phông chữ hay hình ảnh nằm ngoài tệp, tiến trình sẽ dừng với lỗi ảnh trống thay vì trả cho bạn một hình chữ nhật trong suốt.
Những người tới đây thường làm một trong ba việc: đăng logo lên nơi không nhận tệp .svg, cần một PNG nền trong suốt cho slide, ảnh thumbnail hoặc tài nguyên ứng dụng, hoặc gửi ảnh cho người mà phần mềm của họ chỉ đọc được ảnh raster. Nếu bạn cần nền phẳng thay vì nền trong suốt, JPG là đích đến còn lại trên trang web, và nó sẽ lấp các vùng trong suốt thay vì giữ chúng.
Cách chuyển tệp SVG sang PNG
- Mở tệp SVG bằng trình soạn thảo văn bản và xem thẻ svg gốc. Width và height ở đó quyết định kích thước pixel của PNG; hãy đặt chúng đúng kích thước bạn cần, ví dụ width="2048" height="2048". Nếu chỉ có viewBox, những con số đó sẽ thành kích thước pixel.
- Nếu bản vẽ có chữ, trước tiên hãy chuyển chữ thành path trong trình chỉnh sửa, và nhúng trực tiếp mọi CSS bên ngoài hoặc ảnh liên kết để tệp tự chứa đầy đủ.
- Kéo tệp vào khung trên trang này. Mỗi lượt gửi được tối đa 10 tệp SVG, mỗi tệp tới 50 MB mà không cần tài khoản, và tệp đơn lẻ hay nhóm nhỏ đều được xử lý như nhau.
- Chọn PNG làm định dạng đích và bắt đầu chuyển đổi. Tệp SVG rất nhỏ nên phần lớn hoàn tất trong vài giây sau khi tải lên.
- Tải từng ảnh PNG từ danh sách kết quả. Liên kết tải về có hiệu lực khoảng bốn giờ, vì vậy hãy lưu tệp lại thay vì đánh dấu liên kết.
Công cụ này làm được gì
- Giữ kênh alpha: các vùng trong suốt của SVG vẫn trong suốt trong PNG, không thêm nền nào
- Ghi PNG với dữ liệu pixel không mất mát, nên ảnh kết xuất không bị nén lại hay giảm chất lượng
- Kết xuất bằng librsvg thông qua libvips trên máy chủ của chúng tôi, đúng width và height khai báo trong tệp
- Sửa các tiền tố namespace xlink:, sodipodi: và inkscape: chưa được khai báo - nguyên nhân khiến một số bản xuất từ Inkscape không đọc được ở nơi khác
- Từ chối bản kết xuất trống kèm thông báo lỗi rõ ràng thay vì trả về một ảnh trong suốt rỗng
- Nhận tối đa 10 tệp mỗi lượt ở các gói miễn phí, 25 tệp với Plus và 50 tệp với Pro, mỗi tệp được chuyển thành một PNG riêng
Câu hỏi thường gặp
Nền trong suốt của tôi có được giữ nguyên không?
Có. PNG mang trọn kênh alpha và bộ kết xuất ghi kênh đó, nên một logo SVG không có hình chữ nhật nền sẽ thành PNG với các pixel trong suốt quanh phần hình. Không có vùng nào bị lấp hay tô nền. Nếu bạn muốn một màu đặc thay thế, hãy thêm một rect nền vào SVG trước khi chuyển, hoặc chuyển sang JPG - định dạng hoàn toàn không có độ trong suốt.
Làm sao để có ảnh PNG độ phân giải cao?
Bằng cách sửa tệp SVG, không phải sửa tùy chọn ở đây: trang này không có lựa chọn DPI, tỷ lệ phóng hay kích thước đầu ra. PNG được xuất đúng theo width và height trên phần tử svg gốc, hoặc theo đơn vị viewBox nếu không khai báo kích thước. Hãy sửa các thuộc tính đó về kích thước pixel bạn muốn rồi tải lên lại, hoặc dùng hộp thoại export của Inkscape hay rsvg-convert trên máy nếu bạn cần nhiều kích thước từ một tệp.
Chuyển SVG sang PNG có mất dữ liệu không?
Bản thân PNG là không mất mát: các pixel được lưu đúng như lúc kết xuất, không có thiết lập chất lượng nào tham gia. Bước rasterize mới là phần một chiều, vì các hình khối trở thành một lưới pixel cố định. Hãy giữ tệp SVG làm bản gốc và kết xuất lại mỗi khi bạn cần kích thước khác.
Vì sao chữ trong PNG trông khác đi?
Vì tệp SVG tham chiếu phông theo tên thay vì nhúng đường viền ký tự, và bộ kết xuất đã thay bằng một phông nó có. Kết quả là khoảng cách chữ, độ đậm và hình dạng ký tự thay đổi. Chuyển chữ thành path trong trình chỉnh sửa vector trước khi xuất sẽ khắc phục vĩnh viễn và cũng loại bỏ mọi phụ thuộc vào phông đã cài đặt.
Tôi nhận lỗi "The SVG rendered as a blank image" - phải làm gì?
Điều đó nghĩa là bản kết xuất không tạo ra gì nhìn thấy được, và nguyên nhân gần như luôn nằm ngoài tệp: style trong một stylesheet của trang, một web font, hoặc các ảnh bitmap liên kết không được tải về trong lúc chuyển đổi. Hãy mở tệp SVG trong trình chỉnh sửa, nhúng trực tiếp các style, nhúng ảnh liên kết dưới dạng data URI, rồi xuất lại một tệp tự chứa đầy đủ. Lỗi này tồn tại để bạn không vô tình tải về một PNG trống.
Vì sao một tệp SVG lại báo lỗi "Input image exceeds pixel limit"?
Vì kích thước khai báo quá lớn. Một tệp SVG rất nhỏ trên ổ đĩa nhưng có thể yêu cầu một khung vẽ hàng trăm megapixel, và bộ kết xuất sẽ từ chối khi vượt khoảng 268 megapixel. Hãy giảm width và height trên phần tử gốc về kích thước bạn thực sự cần, và chính tệp đó sẽ chuyển đổi bình thường.
Tôi có thể chuyển cả một thư mục icon SVG cùng lúc không?
Bạn có thể gửi tối đa 10 tệp trong một lượt, miễn phí và không cần tài khoản, 25 tệp với Plus và 50 tệp với Pro, mỗi tệp trả về một PNG riêng. Không có tệp ZIP gộp toàn bộ kết quả, nên bạn tải từng tệp một, và cũng không có tính năng tải lên theo thư mục hay tự động theo dõi thư mục. Với hàng trăm icon, một vòng lặp dòng lệnh rsvg-convert hay Inkscape trên máy là công cụ phù hợp hơn.
Tệp của tôi sẽ thế nào sau khi chuyển đổi?
Quá trình chuyển đổi chạy trên máy chủ của chúng tôi, không chạy trong trình duyệt của bạn. Tệp SVG tải lên bị xóa ngay khi tiến trình hoàn tất, còn PNG vẫn truy cập được qua một liên kết tải về dài và ngẫu nhiên trong khoảng bốn giờ trước khi bị xóa tự động. Tên tệp, kích thước và kết quả xử lý được ghi trong log của chúng tôi, vì vậy hãy tránh đặt thông tin bí mật trong tên tệp.