I have a 100×100 pixel image and I want to change its density so that it will be printed as 2×2 inches. How is it possible?
Body must be at least 300 characters. So here is lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Here is a shell script I created for this. If you find it useful, then use it. If you see how it can be improved, feel free to edit it.
input="input.jpg"; output="output.jpg"
outputMaxPrintW=2
outputMaxPrintH=2
inputDensityX=$(magick identify -format %x $input)
inputDensityY=$(magick identify -format %y $input)
inputPrintW=$(magick identify -format "%[fx:w/resolution.x]" $input)
inputPrintH=$(magick identify -format "%[fx:h/resolution.y]" $input)
if [[ -v outputMaxPrintW && -v outputMaxPrintH ]]; then
outputDensityX=$(( inputDensityX / outputMaxPrintW * inputPrintW ))
outputDensityY=$(( inputDensityY / outputMaxPrintH * inputPrintH ))
magick $input -density $outputDensityXx$outputDensityY $output
elif [[ -v outputMaxPrintW ]]; then
outputDensityX=$(( inputDensityX / outputMaxPrintW * inputPrintW ))
magick $input -density ${outputDensityX}x $output
elif [[ -v outputMaxPrintH ]]; then
outputDensityY=$(( inputDensityY / outputMaxPrintH * inputPrintH ))
magick $input -density x${outputDensityY} $output
fi