A method of operating a computing device having volatile data storage and non-volatile data storage, the method comprising: (i) receiving an image file in the volatile data storage of the computing device, the image file being in a first image format; (ii) calculating a hash value of the received image file; (iii) comparing the hash value of the received image file with hash values of other image files that are saved in the non-volatile data storage of the computing device; and (iv) if the hash value of the received image file is the same as the hash value of another image file that is saved in the non-volatile data storage of the computing device, then the received image file is not saved to the non-volatile data storage of the computing device; characterised by: (v) else, if the hash value of the received image file is not the same as the hash value of any other image file that is saved in the non-volatile data storage of the computing device, then the method further comprises: (vi) decoding or converting the received image file to a second format, calculating a hash value of the second format version of the received image file, comparing the hash value of the second format version of the received image file with hash values of second format versions of other image files that are saved in the non-volatile data storage of at the computing device; and (vii) if the hash value of the second format version of the received image file is the same as the hash value of a second format version of another image file that is saved in the non-volatile data storage of the computing device, then the received image file is not saved to the non-volatile data storage of the computing device; else, the received image file is saved to the non-volatile data storage of the computing device. (i) receiving an image file in the volatile data storage of the computing device, the image file being in a first image format; (ii) calculating a hash value of the received image file; (iii) comparing the hash value of the received image file with hash values of other image files that are saved in the non-volatile data storage of the computing device; and (iv) if the hash value of the received image file is the same as the hash value of another image file that is saved in the non-volatile data storage of the computing device, then the received image file is not saved to the non-volatile data storage of the computing device; characterised by: (v) else, if the hash value of the received image file is not the same as the hash value of any other image file that is saved in the non-volatile data storage of the computing device, then the method further comprises: (vi) decoding or converting the received image file to a second format, calculating a hash value of the second format version of the received image file, comparing the hash value of the second format version of the received image file with hash values of second format versions of other image files that are saved in the non-volatile data storage of at the computing device; and (vii) if the hash value of the second format version of the received image file is the same as the hash value of a second format version of another image file that is saved in the non-volatile data storage of the computing device, then the received image file is not saved to the non-volatile data storage of the computing device; else, the received image file is saved to the non-volatile data storage of the computing device.