In general, this is an easy task with the solution described in many places, but almost always that's a description of a manual update using a TFTP server.
Besides that, there is a native Cisco utility Cisco Phone Designer that can be downloaded from the official site. It makes the process easier, but you still have to choose the phone and the picture manually, push the button and so on.
What we needed to do is to update the picture on a large number of Cisco IP phones.
There are third-party software products that provide this function but you can do it on your own.
There is a great article here – http://www.netcraftsmen.com/pushing-backgrounds-to-a-cisco-ip-phone-using-xml/
It gives an example of a script for doing this and we only had to modify this script a little.
So, the solution was as follows...
PC with Windows OS and any web-server.
Images that will be uploaded to the phones. Here you can find the image file parameters (file format and resolution, depending on the IP phone model).
You will also need a text file with a list of IP addresses of the phones that should have the image updated.
You'll have to sort the phones by model manually. You should run the script once for each model with the proper image file specified.
The steps are:
1. Enable personalization on all IP phones that should have the image updated. This can be done manually on each phone (Device->Phone->Phone Personalization = Enable), but it would be better to use the Common Phone Profile.
2. You'll need an End user created in CUCM. The "Controlled devices" list of this user should contain all the phones that should have the image updated.
3. Upload the image files to the web-server.
4. Run the script with the following parameters:
- File name of the list of Cisco IP phones
- URL of the http server where the image files are located
- Icon file name
- Image file name
- User name
5. Now the script is running in the background. You'll get a message when the process is over. The results will be available in a log file.