you can easily create a wallpaper from any image you like with imagemagick's convert command:

convert <the image you like> -gravity center -resize <value in pixels> -background <color> -extent <your screen resolution> <name of the wallpaper file>

the bash script below does the job for you. it detects main color of the image, creates a canvas with specified resolution and detected color, scales the selected image and puts it in the middle of the canvas.

usage: ./scriptname -f [source file] -r [your screen resolution]
example:./makemywall.sh -f coolimage.png -r 1920x1080


#!/bin/bash

display_usage() { 
    echo -e "\nUsage: <scriptname> -f <source file> -r <your screen resolution>" 
    echo -e "\nExample:./makemywall.sh -f coolimage.png -r 1920x1080"
    } 

if [  $# -le 1 ] 
    then 
        display_usage
        exit 1
    fi 
if [[ ( $# == "--help") ||  $# == "-h" ]] 
    then 
        display_usage
        exit 0
    fi 

while getopts f:r: option
    do
        case "${option}"
            in
            f) inpfile=${OPTARG};;
            r) res=${OPTARG};;
        esac
    done

scaling=$((`echo "$res" | sed 's/.*x//'`/2))

bgrcolor=`convert $inpfile -format %c +dither -depth 5  histogram:info: | sort -n | tail -1 | sed -r 's/^.*(#[0-9A-F]{6}).*/\1/'`

convert $inpfile -gravity center -resize $scaling -background $bgrcolor -extent $res wallpaper-$res-$inpfile

example:
let's take the hi-res of this image (sudo-red.png)

the command ./makemywall.sh -f sudo-red.png -r 1920x1080 will create a fullhd wallpaper for desktop

the command ./makemywall.sh -f sudo-red.png -r 1080x1920 will create a fullhd wallpaper for your handy


this script is crap. i know the better way and will send you an email.