func LoadImageFile(file string, image *store.Item) error { fi, err := os.Open(file) if err != nil { log.Printf("Error: %s\n", err.Error()) return err } defer fi.Close() found_time := false var image_time time.Time ex, err := exif.Decode(bufio.NewReader(fi)) if err == nil { dto, err := tagTime(ex, exif.DateTimeOriginal) if err == nil { image_time = dto found_time = true } if !found_time { dtd, err := tagTime(ex, exif.DateTimeDigitized) if err == nil { log.Printf("Using DateTimeDigitized for: %s (%s)\n", file, dtd) image_time = dtd found_time = true } } if !found_time { dt, err := tagTime(ex, exif.DateTime) if err == nil { log.Printf("Using DateTime for: %s (%s)\n", file, dt) image_time = dt found_time = true } } } if !found_time { log.Printf("Using file time for: %s\n", file) image_time = ProtoToTime(*image.FileTimestamp) } its := TimeToProto(image_time) image.ItemTimestamp = &its height, width, kwds, err := getImageInfo(file) if err == nil { if kwds != nil && len(kwds) > 0 { image.Keywords = kwds } image.Image = new(store.Image) image.Image.Height = proto.Int32(int32(height)) image.Image.Width = proto.Int32(int32(width)) } else { log.Printf("Info got error %s: %s", file, err.Error()) } return nil }