Esempio n. 1
0
File: exif.go Progetto: xiam/exif
// Open opens a file path and loads its EXIF data.
func (d *Data) Open(file string) error {

	cfile := C.CString(file)
	defer C.free(unsafe.Pointer(cfile))

	exifData := C.exif_data_new_from_file(cfile)

	if exifData == nil {
		return ErrNoExifData
	}
	defer C.exif_data_unref(exifData)

	return d.parseExifData(exifData)
}
Esempio n. 2
0
File: exif.go Progetto: xiam/exif
// Parse finalizes the data loader and sets the tags
func (d *Data) Parse() error {
	defer d.cleanup()

	exifData := C.exif_loader_get_data(d.exifLoader)
	if exifData == nil {
		return fmt.Errorf(ErrNoExifData.Error(), "")
	}

	defer func() {
		C.exif_data_unref(exifData)
	}()

	return d.parseExifData(exifData)
}
Esempio n. 3
0
File: main.go Progetto: imtaco/exif
// Finalizes the data loader and sets the Tags
func (self *Data) Parse() error {
	defer self.cleanup()

	exifData := C.exif_loader_get_data(self.exifLoader)
	if exifData == nil {
		return ErrNoExifData
	}

	defer func() {
		C.exif_data_unref(exifData)
	}()

	return self.parseExifData(exifData)
}
Esempio n. 4
0
// Opens a file path and tries to read the EXIF data inside.
func (self *Data) Open(file string) error {

	cfile := C.CString(file)

	exifData := C.exif_data_new_from_file(cfile)

	C.free(unsafe.Pointer(cfile))

	if exifData == nil {
		return fmt.Errorf(ErrNoExifData.Error(), file)
	}

	defer func() {
		C.exif_data_unref(exifData)
	}()

	return self.parseExifData(exifData)
}