Преобразование векторного рисования в SVG делает изображение маленьким и пиксельным, как мне правильно его преобразовать? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть vector drawable в Android Studio, который я хотел бы преобразовать в pdf или png. Первый шаг, который я узнал, - преобразовать его в svg. Я делаю это с https://shapeshifter.design (затем с svg до png с использованием https://svgtopng.com), но размер изображения становится действительно маленьким и пиксельным. В Android Studio выглядит нормально. Я немного сбит с толку, хотя svg был vector форматом, на который не влиял размер.

Код vector drawable указан ниже. Я попытался изменить свойства height и width, но это только меняет размер холста, но не фактическое изображение. И насколько я понимаю, это все равно значения по умолчанию. Я также попытался добавить android:scaleType="fitXY", но это ничего не дало. Также попробовал

android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"

Но ничего.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="10dp"
    android:height="22dp"
    android:viewportWidth="10"
    android:viewportHeight="22">
  <path
      android:pathData="M2,6.5L8,6.5A1.5,1.5 0,0 1,9.5 8L9.5,20A1.5,1.5 0,0 1,8 21.5L2,21.5A1.5,1.5 0,0 1,0.5 20L0.5,8A1.5,1.5 0,0 1,2 6.5z"
      android:strokeWidth="1"
      android:fillColor="#00000000"
      android:strokeColor="#fff"/>
  <path
      android:pathData="M5,12m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
      android:strokeWidth="2"
      android:fillColor="#00000000"
      android:strokeColor="#fff"/>
  <path
      android:pathData="M3,18m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
      android:fillColor="#fff"/>
  <path
      android:pathData="M7,18m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
      android:fillColor="#fff"/>
  <path
      android:pathData="M1.5229,2.5a3.919,3.919 0,0 1,3.477 -2,4 4,0 0,1 3.477,2"
      android:strokeWidth="1"
      android:fillColor="#00000000"
      android:strokeColor="#fff"
      android:strokeLineCap="round"/>
  <path
      android:pathData="M4,3.834a1.137,1.137 0,0 1,1 -0.667,1.16 1.16,0 0,1 1,0.667"
      android:strokeWidth="1"
      android:fillColor="#00000000"
      android:strokeColor="#fff"
      android:strokeLineCap="round"/>
</vector>

Я посмотрел на https://stackoverflow.com/questions/34936590/why-isnt-my-vector-drawable-scaling-as-expected и попробовал большинство вещей там, но все еще ничего.

1 Ответ

0 голосов
/ 06 мая 2020

Для преобразования иконок между Andriod, iOS и Web я бы порекомендовал Respresso. Для этого конкретного случая вы можете использовать Image Converter . Чтобы убедиться, что вы получаете нужные форматы, вам нужно выбрать png для Android и оставить параметр по умолчанию auto (pdf/raster) для iOS. Если вам также нужен вывод SVG, проверьте параметр web и оставьте параметр auto (svg/raster).

(Поскольку значок белый, не бойтесь получить полностью белый pdf, так как фон по умолчанию для pdf также белый. Для iOS он будет работать отлично.)

По умолчанию параметры рисования width и height будут использоваться как разрешение mdpi для создания растровых (png) изображений. Если вам нужны разные размеры вывода, вы можете зарегистрироваться в службе (это бесплатно), и это позволит вам настроить размер вывода для каждой платформы.

Respresso сделает все средние шаги во время Преобразование, вам не нужно использовать несколько конвертеров. Я надеюсь, что это решит вашу проблему.

...