Index: /trunk/grails-app/i18n/messages.properties
===================================================================
--- /trunk/grails-app/i18n/messages.properties	(revision 548)
+++ /trunk/grails-app/i18n/messages.properties	(revision 549)
@@ -156,4 +156,5 @@
 inventory.item.already.has.picture=Inventory item already has a picture, please delete the old picture first.
 inventory.item.picture.file.unrecognised=Image file [{0}]: type not recognised.
+inventory.item.picture.source.not.supported=Image source type not supported.
 
 inventoryMovement.quantity.insufficientItemsInStock=Could not complete operation, insufficient items in stock.
Index: /trunk/grails-app/services/CreateDataService.groovy
===================================================================
--- /trunk/grails-app/services/CreateDataService.groovy	(revision 548)
+++ /trunk/grails-app/services/CreateDataService.groovy	(revision 549)
@@ -13,6 +13,9 @@
     def dateUtilService
     def appConfigService
+    def inventoryItemService
     def assignedGroupService
     def assignedPersonService
+
+    def grailsApplication
 
 /*******************************************
@@ -1203,4 +1206,6 @@
         def inventoryItemInstance
 
+        def pictureResource = grailsApplication.mainContext.getResource('images/logo.png')
+
         //InventoryItem #1
         inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
@@ -1213,4 +1218,5 @@
                                                                                     reorderPoint: 0)
         saveAndTest(inventoryItemInstance)
+        inventoryItemService.savePicture(inventoryItemInstance, pictureResource)
 
         //InventoryItem #2
@@ -1225,4 +1231,5 @@
                                                                                     reorderPoint: 0)
         saveAndTest(inventoryItemInstance)
+        inventoryItemService.savePicture(inventoryItemInstance, pictureResource)
 
         //InventoryItem #3
@@ -1236,4 +1243,5 @@
                                                                                     reorderPoint: 2)
         saveAndTest(inventoryItemInstance)
+        inventoryItemService.savePicture(inventoryItemInstance, pictureResource)
 
         //InventoryItem #4
@@ -1247,4 +1255,5 @@
                                                                                     reorderPoint: 0)
         saveAndTest(inventoryItemInstance)
+        inventoryItemService.savePicture(inventoryItemInstance, pictureResource)
 
         //InventoryItem #5
@@ -1258,4 +1267,5 @@
                                                                                     reorderPoint: 2)
         saveAndTest(inventoryItemInstance)
+        inventoryItemService.savePicture(inventoryItemInstance, pictureResource)
     }
 
Index: /trunk/grails-app/services/InventoryItemService.groovy
===================================================================
--- /trunk/grails-app/services/InventoryItemService.groovy	(revision 548)
+++ /trunk/grails-app/services/InventoryItemService.groovy	(revision 549)
@@ -261,4 +261,5 @@
                 return fail(field:"picture", code:"inventory.item.already.has.picture")
 
+            // Declare some more variables, since we appear to have most of what we need.
             def picture = new Picture(inventoryItem: result.inventoryItemInstance)
             def imaging = new Imaging()
@@ -268,4 +269,5 @@
             def pictureInputStream
 
+            // Check the supplied pictureSource and get the inputStream.
             if(pictureSource instanceof javax.servlet.http.HttpServletRequest) {
                 def multiPartFile = pictureSource.getFile('file')
@@ -293,19 +295,26 @@
             }
             else {
-                    return fail(code:"default.file.not.supplied")
-            }
-
+                    return fail(code:"inventory.item.picture.source.not.supported")
+            }
+
+            // Create the Images.
             try {
                 images = imaging.createAll(result.inventoryItemInstance, picture, pictureInputStream)
+                // Ensure the stream is closed.
+                pictureInputStream.close()
             }
             catch(Exception ex) {
                 log.error("picture save", ex)
+                // Ensure the stream is closed.
+                pictureInputStream.close()
                 return fail(code:"inventory.item.picture.file.unrecognised", args: [pictureFileName])
             }
 
+            // Add images to picture.
             images.each { image ->
                 picture.addToImages(image)
             }
 
+            // Save picture.
             if(picture.hasErrors() || !picture.save())
                 return fail(code:"default.create.failure", args: ["Picture"])
@@ -313,4 +322,5 @@
             result.inventoryItemInstance.picture = picture
 
+            // Save inventoryItem.
             if(result.inventoryItemInstance.hasErrors() || !result.inventoryItemInstance.save())
                 return fail(code:"default.create.failure")
