Làm cách nào để chuyển đổi một SVG vuông thành ICO cỡ lớn?


24

Tôi đã vẽ một biểu tượng trong InkScape và muốn xuất nó thành tệp ICO bao gồm các họa tiết cho tất cả các độ phân giải hợp lý (16x16, 32x32, ... 256x256, v.v.). Làm thế nào điều này có thể được thực hiện (mà không cần sử dụng phần mềm lớn và đắt tiền như Photoshop, CorelDraw, v.v.)?


2
Một tìm kiếm nhanh cho tôi biết không có cách nào để xuất ngay cả một ICO ra khỏi InkScape, nhưng có rất nhiều gợi ý về cách thực hiện với phần mềm bổ sung - miễn phí như GIMP. Bạn đã kiểm tra các tùy chọn đó? Nếu họ không làm việc cho bạn, bạn có thể nói tại sao không?
usr2564301

@RadLexus những gì tôi đã thử là một số công cụ trực tuyến và tất cả chúng, theo như tôi có thể hiểu, có nghĩa là tạo ICOns một kích thước.
Ivan

5
Vậy bạn có muốn biết cách tạo ICO nhiều kích cỡ không? Hãy thử các tùy chọn trong câu trả lời Stack Overflow này: stackoverflow.com/questions/4354617/ (một lần nữa, được tìm thấy bởi một truy vấn Google đơn giản ...).
usr2564301

1
Có một phần mở rộng Inkscape dường như xuất dưới dạng tệp ico , nhưng tôi không có thời gian để thử nếu nó hoạt động.
Paolo Gibellini

Nếu bạn đã tìm thấy bất kỳ câu hỏi nào dưới đây để trả lời câu hỏi của mình, vui lòng đánh dấu nó là câu trả lời được chấp nhận.
DVᴀᴅᴇʀ

Câu trả lời:


24

Bạn có thể sử dụng ImageMagick ngay lập tức:

convert -density 384 icon.svg -define icon:auto-resize icon.ico

3
Tại sao mật độ đó?
ness101

1
Tôi không biết, tôi chỉ sao chép cái này từ nơi khác.
heltonbiker

@ naught101 đây là tài liệu cho cờ mật độ - mặc dù, có vẻ như đó là một bước khá không cần thiết trừ khi bạn đang làm một cái gì đó rất cụ thể với kích thước hình ảnh, dpi và rasterization hình ảnh trung gian. fantemagick.org/script/command-line-options.php#d mật độ
CreationTribe

7
Sử dụng convert -background none icon.svg -define icon:auto-resize icon.icođể giữ nền trong suốt.
Robert Hume

2
magick convert -background none icon.svg -define icon:auto-resize icon.icođã làm cho tôi.
intotecho

15

Một giải pháp dòng lệnh:

1) Xuất SVG của bạn sang PNG bằng InkScape

2) Thay đổi kích thước hình ảnh PNG này theo kích thước bạn muốn với ImageMagick:

magick convert master.png -resize 16x16 16.png
magick convert master.png -resize 32x32 32.png
magick convert master.png -resize 48x48 48.png

3) Chuyển đổi hình ảnh PNG sang ICO:

magick convert 16.png 32.png 48.png icon.ico

4) Đảm bảo ICO của bạn chứa mọi thứ:

identify icon.ico
icon.ico[1] ICO 16x16 16x16+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 32x32 32x32+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 48x48 48x48+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000

Bạn cũng có thể sử dụng một tập tin bó hoặc shell đơn giản để đơn giản hóa công việc.
Paolo Gibellini

3
Sẽ không tốt hơn (ngay cả khi phức tạp hơn một chút) để xuất nhiều kích thước png trực tiếp từ SVG thay vì thay đổi kích thước các PNG đã rasterized?
heltonbiker

1
Chỉ trong trường hợp bất kỳ ai khác tò mò, "..." không phải là nghĩa đen. Nó đại diện cho các kích thước tệp png khác để nhồi nhét vào tệp favicon.ico.
Nỗi nhớ.io

@ Nỗi nhớ.io Nhận xét tốt, cảm ơn! Tôi chỉnh sửa câu trả lời.
philippe_b

5

Phiên bản Bash ...

#!/bin/bash

set -ex

svg=$1

size=(16 32 24 48 72 96 144 152 192 196)

echo Making bitmaps from your svg...

for i in ${size[@]}; do
  inkscape $svg --export-png="favicon-$i.png" -w$i -h$i --without-gui
done

echo Compressing...

## Replace with your favorite (e.g. pngquant)
# optipng -o7 favicon-*.png
pngquant -f --ext .png favicon-*.png --posterize 4 --speed 1

echo Converting to favicon.ico...

convert $(ls -v favicon-*.png) favicon.ico

## Clean-up maybe?
# rm favicon-*.png

echo Done

Sử dụng: ./favicon.sh your-square-svg-file.svg

Yêu cầu: inkscape fantemagick optipng (tùy chọn) từ trình quản lý gói của bạn.

Tôi thấy việc tạo lại cái này cho bash shell dễ dàng hơn vì Win10 và Inkscape không hợp nhau. Điều này đã được thử nghiệm trong Hệ thống con Windows cho Linux nhưng nó cũng sẽ hoạt động trên Mac.

Đã sử dụng tài liệu tham khảo này để chọn kích thước tôi quan tâm: https://github.com/audreyr/favicon-cheat-sheet . Điều chỉnh sizemảng theo nhu cầu cụ thể của bạn.


4

Tôi muốn đề xuất phương pháp này:

1) tạo tập lệnh để xuất SVG sang bất kỳ kích thước yêu cầu nào. Tôi đã mã hóa tập lệnh .bat này để giúp tôi tạo biểu tượng Android

@echo off
set file="%~f1"
set path=%~dp1
set inkscape="C:\Program Files\Inkscape\inkscape.exe"

echo Le icone saranno salvate in %path%
echo Produzione icone applicative

echo %file% --export-png="%path%/ic32.png" -w32 -h32 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic48.png" -w48 -h48 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic72.png" -w72 -h72 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic96.png" -w96 -h96 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic144.png" -w144 -h144 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic192.png" -w192 -h192 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic512.png" -w512 -h512 > %~dp1/commands.txt
%inkscape% --shell < %~dp1/commands.txt
erase "%~dp1/commands.txt"

echo Procedura terminata

LƯU Ý :

  • % inkscape% var được xác định phải phù hợp với đường dẫn cài đặt Inkscape của bạn
  • tập lệnh lặp lại tất cả các lệnh xuất thành tệp tạm thời để quản lý tốt hơn quá trình inkscape. Cli param "shell" chấp nhận nhiều lệnh hơn bằng cách sử dụng một thể hiện thay vì sinh ra một thể hiện trên mỗi lệnh.

Với tham số này, Inkscape sẽ vào chế độ vỏ dòng lệnh tương tác. Trong chế độ này, bạn nhập các lệnh tại dấu nhắc và Inkscape thực thi chúng, mà bạn không phải chạy một bản sao Inkscape mới cho mỗi lệnh. Tính năng này chủ yếu hữu ích cho việc sử dụng tập lệnh và máy chủ: nó không thêm khả năng mới nhưng cho phép bạn cải thiện tốc độ và yêu cầu bộ nhớ của bất kỳ tập lệnh nào liên tục gọi Inkscape để thực hiện các tác vụ dòng lệnh (như xuất hoặc chuyển đổi). Mỗi lệnh trong chế độ shell phải là một dòng lệnh Inkscape hợp lệ hoàn chỉnh nhưng không có tên chương trình Inkscape, ví dụ "file.svg --export-pdf = file.pdf". ( xem hướng dẫn sử dụng inkscape )

2) Thêm vào tập lệnh trên, cú pháp chuyển đổi được nêu trong câu trả lời philippe-b hợp nhất tất cả các PNG được tạo thành một tệp ICO duy nhất

3) Tùy chọn, xóa tất cả các PNG đã xuất vì chúng không còn cần thiết


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.