I have the following 8×8 SVG graphic for which I want a scaled version of as PNG. (I found no way to upload SVG so you can see it.) The SVG consist of 8×8 black/white "pixels".
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
<path fill="#fff" d="M0,0H8V8H0"/>
<path fill="#000" d="M0,0H7V1H6V0H5V3H8V2H7V5H6V5H6V4H8V6H7V8H8V7H1V8H2V5H3V6H4V7H5V4H2V1H3V2H4V3H1V4H0"
fill-rule="evenodd"/>
</svg>
What I want is a scaled black/white PNG where each pixel has a "size" of 10×10; no smoothing or dithering. What does not work is -resize 80x80
(will blur and still has wrong pixel values).
Edit
> convert -version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
Edit 2
As asked in a comment, here is the result of
> convert -verbose a3x2.svg txt:
'inkscape' '/tmp/magick-445746DLWe3-eb4nrF' --export-filename='/tmp/magick-445746FrMsKiicip2C' --export-dpi='96,96' --export-background='rgb(100%,100%,100%)' --export-background-opacity='1' > '/tmp/magick-445746cd-3Bn1wlmb8' 2>&1
mvg:/tmp/magick-445746UpfR0goE2RRA=>/tmp/magick-445746UpfR0goE2RRA MVG 8x8 8x8 0 0 16-bit sRGB 445B 0.000u 0:00.000
a3x2.svg MVG 8x8 8x8 0 0 16-bit sRGB 445B 0.000u 0:00.000
# ImageMagick pixel enumeration: 8,8,65535,srgba
0,0: (0,0,0,65535) #000000000000FFFF black
1,0: (0,0,0,65535) #000000000000FFFF black
2,0: (0,0,0,65535) #000000000000FFFF black
3,0: (0,0,0,65535) #000000000000FFFF black
4,0: (0,0,0,65535) #000000000000FFFF black
5,0: (0,0,0,65535) #000000000000FFFF black
6,0: (0,0,0,65535) #000000000000FFFF black
7,0: (0,0,0,65535) #000000000000FFFF black
0,1: (0,0,0,65535) #000000000000FFFF black
1,1: (0,0,0,65535) #000000000000FFFF black
2,1: (0,0,0,65535) #000000000000FFFF black
3,1: (0,0,0,65535) #000000000000FFFF black
4,1: (0,0,0,65535) #000000000000FFFF black
5,1: (0,0,0,65535) #000000000000FFFF black
6,1: (0,0,0,65535) #000000000000FFFF black
7,1: (0,0,0,65535) #000000000000FFFF black
0,2: (0,0,0,65535) #000000000000FFFF black
1,2: (0,0,0,65535) #000000000000FFFF black
2,2: (0,0,0,65535) #000000000000FFFF black
3,2: (0,0,0,65535) #000000000000FFFF black
4,2: (0,0,0,65535) #000000000000FFFF black
5,2: (0,0,0,65535) #000000000000FFFF black
6,2: (61439,61439,61439,65535) #EFFFEFFFEFFFFFFF srgba(94%,94%,94%,1)
7,2: (0,0,0,65535) #000000000000FFFF black
0,3: (0,0,0,65535) #000000000000FFFF black
1,3: (0,0,0,65535) #000000000000FFFF black
2,3: (0,0,0,65535) #000000000000FFFF black
3,3: (0,0,0,65535) #000000000000FFFF black
4,3: (0,0,0,65535) #000000000000FFFF black
5,3: (0,0,0,65535) #000000000000FFFF black
6,3: (0,0,0,65535) #000000000000FFFF black
7,3: (0,0,0,65535) #000000000000FFFF black
0,4: (0,0,0,65535) #000000000000FFFF black
1,4: (0,0,0,65535) #000000000000FFFF black
2,4: (0,0,0,65535) #000000000000FFFF black
3,4: (0,0,0,65535) #000000000000FFFF black
4,4: (0,0,0,65535) #000000000000FFFF black
5,4: (0,0,0,65535) #000000000000FFFF black
6,4: (0,0,0,65535) #000000000000FFFF black
7,4: (0,0,0,65535) #000000000000FFFF black
0,5: (65535,65535,65535,65535) #FFFFFFFFFFFFFFFF white
1,5: (61439,61439,61439,65535) #EFFFEFFFEFFFFFFF srgba(94%,94%,94%,1)
2,5: (0,0,0,65535) #000000000000FFFF blaca3x2.svg=> MVG 8x8 8x8 0 0 16-bit sRGB 445B 0.000u 0:00.000
k
3,5: (0,0,0,65535) #000000000000FFFF black
4,5: (61439,61439,61439,65535) #EFFFEFFFEFFFFFFF srgba(94%,94%,94%,1)
5,5: (0,0,0,65535) #000000000000FFFF black
6,5: (0,0,0,65535) #000000000000FFFF black
7,5: (0,0,0,65535) #000000000000FFFF black
0,6: (65535,65535,65535,65535) #FFFFFFFFFFFFFFFF white
1,6: (65535,65535,65535,65535) #FFFFFFFFFFFFFFFF white
2,6: (0,0,0,65535) #000000000000FFFF black
3,6: (0,0,0,65535) #000000000000FFFF black
4,6: (0,0,0,65535) #000000000000FFFF black
5,6: (0,0,0,65535) #000000000000FFFF black
6,6: (0,0,0,65535) #000000000000FFFF black
7,6: (0,0,0,65535) #000000000000FFFF black
0,7: (65535,65535,65535,65535) #FFFFFFFFFFFFFFFF white
1,7: (0,0,0,65535) #000000000000FFFF black
2,7: (0,0,0,65535) #000000000000FFFF black
3,7: (0,0,0,65535) #000000000000FFFF black
4,7: (0,0,0,65535) #000000000000FFFF black
5,7: (0,0,0,65535) #000000000000FFFF black
6,7: (0,0,0,65535) #000000000000FFFF black
7,7: (0,0,0,65535) #000000000000FFFF black
CodePudding user response:
Mmmm... I don't know what's going on, but I can confirm that if I use the rsvg
delegate in place of the MVG delegate, I get the correct result:
I find it simplest to use the docker alpine
image to demonstrate because it is very current and has an extensive set of delegates without any user configuration. So, I just did:
# Start latest alpine image, bind mounting current working directory to /work
docker run -it -v "$(pwd)":/work alpine
apk update && apk add imagemagick
identify -version
Version: ImageMagick 7.1.0-52 Q16-HDRI aarch64 20549 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules
Delegates (built-in): bzlib cairo fontconfig freetype gslib heic jng jpeg jxl lcms ltdl lzma png ps rsvg tiff webp x xml zlib
Compiler: gcc (12.2)
magick image.svg -scale 80x80 result.png
CodePudding user response:
What worked for me on x86_64-linux-gnu is to update from v6.9 to v7.1 and then use
> convert a3x2.svg -scale 80x80 a3x2.png
as expected. More specifically, I downloaded ImageMagick-7.1.0-60.tar.gz
from https://imagemagick.org/archive/ (there is also ImageMagick.tar.gz
which presumably is the newest version, but I am not sure about that so that I downloaded 7.1 explicitly).
- Extract the sources:
tar xfz ImageMagick-7.1.0-60.tar.gz
- Suppose the sources are at
/home/me/sources/ImageMagick-7.1.0-60
. Create a build directory at/home/me/build/imagemagick-7.1
. cd
to the build directory and configure:cd /home/me/build/imagemagick-7.1
/home/me/sources/ImageMagick-7.1.0-60/configure --prefix=/home/me/install/imagemagick-7.1
- Run
make
and thenmake install
. - Add the
/home/me/install/imagemagick-7.1/bin
directory toPATH
, alternative use alias or links to point to the tools located there.
To my great surprise, I didn't get any dependency problems, and everything appears to work fine for now. FYI, using the RPM packages did not work for me due to missing dependencies (≈50 of them).