Я сделал довольно простую шахматную доску в inkscape. Это просто много прямоугольников с контуром толщиной 1 пиксель. Они перекрываются на 1 пиксель, поэтому все линии имеют толщину в один пиксель, а не в два. Я сделал это на холсте 256x256.
Теперь я хочу экспортировать эту вещь. В параметрах экспорта я выбрал 256x256 для размера растрового изображения, так что это просто копия файла inkscape один к одному. Однако, когда я его экспортирую, только некоторые линии четкие и черные, а толщина всего один пиксель. Другие имеют толщину два пикселя и темно-серые.
Я предполагаю, что это какая-то умная функция inkscape, которая обычно делает вещи лучше. Но я не хочу этого, я действительно хочу, чтобы мой svg был преобразован в png один к одному.
Как я могу этого добиться?
Спасибо за ваши ответы,
Тони
Если вам нужен точный растровый файл размером 256x256 пикселей, содержащий шаблон шахматной доски в 1 пиксель, вам обязательно следует использовать растровую программу (или запрограммировать точный результат, который вы хотите, с помощью языка программирования).
Например, если вы используете GIMP (который, поскольку Inkscape бесплатен как в Beer, так и в Speech), вы можете просто создать новое изображение размером 256x256 пикселей и выбрать опцию Filters->Render->Pattern->Checkerboard, чтобы получить желаемое изображение и файл-> экспорт, чтобы получить результат именно таким, как вы хотите.
(В качестве дополнительного примечания: не пытайтесь сохранить такое изображение в виде файла JPG — вы снова потеряете точность пикселей. Используйте PNG или даже GIF)
Что касается вашего вопроса (я описал, как решить вашу проблему) - это сама природа векторных изображений, не имеющих сопоставления «один к одному» с пиксельными изображениями. В этом их идея: разрешить геометрическое описание сцены вместо пикселей. При этом они делаютпозволяют создавать гораздо более точные изображения произвольного масштаба, используя гораздо меньше вычислительных ресурсов (в основном использование памяти). Например, изображение размером 3000x2000 пикселей, содержащее один ровный красный кружок в центре, может потреблять до 18 мегабайт в несжатом виде, что примерно эквивалентно текстовой информации, содержащейся в 5 полных Библиях. (хотя в большинстве форматов файлов используется сжатие, которое может резко сократить это). Напротив, то же самое изображение, описанное в векторном формате, которое могло бы иметь точно такой же вид, заняло бы не более 1 КБ, что в 18000 раз меньше потребляет ресурсов, именно потому, что вам не нужно сохранять информацию для каждого пикселя.
В описанном случае вы пытаетесь вместо этого определить один векторный объект для каждого пикселя. Мало того, что вам не нужны возможности повторного масштабирования векторных изображений, так как вы делаете полную противоположность тому, для чего изначально задумывались векторные изображения: поскольку каждый пиксель использует 3 байта информации и описывает квадрат в текстовом векторном формате. например, SVG займет около 40 байт, вы потребляете в 10 раз больше ресурсов, чем должны с этим изображением, вместо того, чтобы экономить. И притом, как вы выяснили, с учетом ошибок округления из-за сглаживания.
Паоло Джибеллини
томет