当前位置: 首页>>代码示例>>Golang>>正文


Golang C.MagickRelinquishMemory函数代码示例

本文整理汇总了Golang中C.MagickRelinquishMemory函数的典型用法代码示例。如果您正苦于以下问题:Golang MagickRelinquishMemory函数的具体用法?Golang MagickRelinquishMemory怎么用?Golang MagickRelinquishMemory使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了MagickRelinquishMemory函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: Metadata

// Returns all metadata keys from the currently loaded image.
func (self *Canvas) Metadata() map[string]string {
	var n C.size_t
	var i C.size_t

	var value *C.char
	var key *C.char

	data := make(map[string]string)

	cplist := C.CString("*")

	properties := C.MagickGetImageProperties(self.wand, cplist, &n)

	C.free(unsafe.Pointer(cplist))

	for i = 0; i < n; i++ {
		key = C.MagickGetPropertyName(properties, C.size_t(i))
		value = C.MagickGetImageProperty(self.wand, key)

		data[strings.Trim(C.GoString(key), " ")] = strings.Trim(C.GoString(value), " ")

		C.MagickRelinquishMemory(unsafe.Pointer(value))
		C.MagickRelinquishMemory(unsafe.Pointer(key))
	}

	return data
}
开发者ID:phacops,项目名称:canvas,代码行数:28,代码来源:canvas.go

示例2: ImageBlob

/* Implements direct to memory image formats. */
func (w *MagickWand) ImageBlob(length *uint) []byte {
	blobPtr := unsafe.Pointer(C.MagickGetImageBlob(w.wand, (*C.size_t)(unsafe.Pointer(length))))
	blob := C.GoBytes(blobPtr, C.int(int(*length)))
	// need free blob memory
	C.MagickRelinquishMemory(blobPtr)
	return blob
}
开发者ID:rli-diraryi,项目名称:paint,代码行数:8,代码来源:magick_image.go

示例3: GetBytes

func (img *Image) GetBytes() []byte {
	size := 0
	buf := C.MagickGetImageBlob(img.wand, (*C.size_t)(unsafe.Pointer(&size)))
	defer C.MagickRelinquishMemory(unsafe.Pointer(buf))

	return C.GoBytes(unsafe.Pointer(buf), C.int(size))
}
开发者ID:georgebashi,项目名称:pugholder,代码行数:7,代码来源:image.go

示例4: WriteImageBlob

/*
WriteImageBlob() writes this image wand to Blob
*/
func (this *Image) WriteImageBlob() error {
	var err error = nil
	tran := this.Cat.NewTransaction("GraphicsMagickCmd", "WriteImageBlob")
	defer func() {
		tran.SetStatus(err)
		tran.Complete()
	}()
	if this.magickWand == nil {
		err = errors.New("error write image to blob:magickwand is nil")
		return err
	}
	var sizep int = 0

	blob := C.MagickWriteImageBlob(this.magickWand, (*C.size_t)(unsafe.Pointer(&sizep)))
	if blob != nil {
		defer C.free(unsafe.Pointer(blob))
	} else {
		var etype int
		descr := C.MagickGetException(this.magickWand, (*C.ExceptionType)(unsafe.Pointer(&etype)))
		defer C.MagickRelinquishMemory(unsafe.Pointer(descr))
		err = errors.New(fmt.Sprintf("error write image to blob: %s (ExceptionType=%d)", C.GoString(descr), etype))
		return err
	}

	this.Blob = C.GoBytes(unsafe.Pointer(blob), C.int(sizep))

	return nil
}
开发者ID:cannonhuang,项目名称:nephele,代码行数:31,代码来源:image.go

示例5: SetFormat

/*
Sets the file or blob format (e.g. "BMP") to be used when a file or blob is read. Usually this is
not necessary because GraphicsMagick is able to auto-detect the format based on the file header
(or the file extension), but some formats do not use a unique header or the selection may be ambigious.
 Use MagickSetImageFormat() to set the format to be used when a file or blob is to be written.

format: The file or blob format
*/
func (this *Image) SetFormat(format string) error {
	var err error = nil
	tran := this.Cat.NewTransaction("GraphicsMagickCmd", "SetFormat")
	defer func() {
		tran.SetStatus(err)
		tran.Complete()
	}()
	if this.magickWand == nil {
		err = errors.New("error set image format:magickwand is nil")
		return err
	}

	var cs *C.char = C.CString(format)
	defer C.free(unsafe.Pointer(cs))
	status := C.MagickSetImageFormat(this.magickWand, cs)
	if status == 0 {
		var etype int
		descr := C.MagickGetException(this.magickWand, (*C.ExceptionType)(unsafe.Pointer(&etype)))
		defer C.MagickRelinquishMemory(unsafe.Pointer(descr))
		err = errors.New(fmt.Sprintf("error set image format: %s (ExceptionType = %d)", C.GoString(descr), etype))
		return err
	}

	return nil
}
开发者ID:cannonhuang,项目名称:nephele,代码行数:33,代码来源:image.go

示例6: Composite

/*
Composite() composite one image onto another at the specified offset.

compositeImg: The composite image
x: The column offset of the composited image.
y: The row offset of the composited image.
*/
func (this *Image) Composite(compositeImg *Image, x int64, y int64) error {
	var err error = nil
	tran := this.Cat.NewTransaction("GraphicsMagickCmd", "Composite")
	defer func() {
		tran.SetStatus(err)
		tran.Complete()
	}()
	if this.magickWand == nil {
		err = errors.New("error composite image:magickwand is nil")
		return err
	}

	if compositeImg.magickWand == nil {
		err = errors.New("error composite image:composite image wand is nil")
		return err
	}
	status := C.MagickCompositeImage(this.magickWand, compositeImg.magickWand, C.OverCompositeOp, C.long(x), C.long(y))
	if status == 0 {
		var etype int
		descr := C.MagickGetException(this.magickWand, (*C.ExceptionType)(unsafe.Pointer(&etype)))
		defer C.MagickRelinquishMemory(unsafe.Pointer(descr))
		err = errors.New(fmt.Sprintf("error composite image: %s (ExceptionType = %d)", C.GoString(descr), etype))
		return err
	}

	return nil
}
开发者ID:cannonhuang,项目名称:nephele,代码行数:34,代码来源:image.go

示例7: Exception

// Returns the severity, reason, and description of any error that occurs
// when using other methods in this API.
func (p *PixelWand) Exception() (string, int) {
	var severity C.ExceptionType
	errPtr := C.PixelGetException(p.wand, &severity)
	C.PixelClearException(p.wand)
	err := C.GoString(errPtr)
	C.MagickRelinquishMemory(unsafe.Pointer(errPtr))
	return err, int(severity)
}
开发者ID:fenglvming,项目名称:paint,代码行数:10,代码来源:pixel_wand.go

示例8: Error

// Returns the latest error reported by the MagickWand API.
func (self *Canvas) Error() error {
	var t C.ExceptionType
	ptr := C.MagickGetException(self.wand, &t)
	message := C.GoString(ptr)
	C.MagickClearException(self.wand)
	C.MagickRelinquishMemory(unsafe.Pointer(ptr))
	return errors.New(message)
}
开发者ID:phacops,项目名称:canvas,代码行数:9,代码来源:canvas.go

示例9: GetImageBlob

// Writes canvas to a file, returns true on success.
func (cv Canvas) GetImageBlob() []byte {
	cv.Update()
	var length C.size_t
	data := C.MagickGetImageBlob(cv.wand, &length)
	bin := C.GoBytes(unsafe.Pointer(data), C.int(length))
	C.MagickRelinquishMemory(unsafe.Pointer(data))
	return bin
}
开发者ID:vuleetu,项目名称:canvas,代码行数:9,代码来源:canvas.go

示例10: ExportBlob

// Public: export the current image into a blob. Also destroy the current wand
//
// Examples:
//  im = NewMage()
//  original, err := ioutil.ReadFile("test.jpg")
//  success := im.ReadBlob(original)
//  imageBytes := im.ExportBlob()
func (m *Mage) ExportBlob() []byte {
	defer m.Destroy()
	newSize := C.size_t(0)
	C.MagickResetIterator(m.wand)
	image := C.MagickGetImageBlob(m.wand, &newSize)
	imagePointer := unsafe.Pointer(image)
	defer C.MagickRelinquishMemory(imagePointer)
	return C.GoBytes(imagePointer, C.int(newSize))
}
开发者ID:dqminh,项目名称:mage,代码行数:16,代码来源:mage.go

示例11: Error

func (self *PixelIterator) Error() error {
	var exception C.ExceptionType

	ptr := C.PixelGetIteratorException(self.iterator, &exception)
	message := C.GoString(ptr)

	C.PixelClearIteratorException(self.iterator)
	C.MagickRelinquishMemory(unsafe.Pointer(ptr))

	return errors.New(message)
}
开发者ID:gronpipmaster,项目名称:canvas,代码行数:11,代码来源:pixel_iterator.go

示例12: GetImageBlob

// Get image data as a byte array.
func (self *Canvas) GetImageBlob() ([]byte, error) {
	var size C.size_t = 0

	p := unsafe.Pointer(C.MagickGetImageBlob(self.wand, &size))
	if size == 0 {
		return nil, errors.New("Could not get image blob.")
	}

	blob := C.GoBytes(p, C.int(size))

	C.MagickRelinquishMemory(p)

	return blob, nil
}
开发者ID:bouticfactory,项目名称:canvas,代码行数:15,代码来源:canvas.go

示例13: GetImageBlob

//get image as byte array
func (self *Canvas) GetImageBlob() ([]byte, error) {
	var imageSize C.size_t = 0

	imageBlobPointer := unsafe.Pointer(C.MagickGetImageBlob(self.wand, &imageSize))
	if imageSize == 0 {
		return nil, fmt.Errorf("Could not get image blob \n")
	}

	goBlob := C.GoBytes(imageBlobPointer, C.int(imageSize))

	C.MagickRelinquishMemory(imageBlobPointer)

	return goBlob, nil
}
开发者ID:yvasiyarov,项目名称:canvas,代码行数:15,代码来源:canvas.go

示例14: Scale

/*
Scale() scales the size of this image to the given dimensions.

columns: The number of columns in the scaled image.
rows: The number of rows in the scaled image
*/
func (this *Image) Scale(columns int64, rows int64) error {
	if this.magickWand == nil {
		return errors.New("error scale image:magickwand is nil")
	}

	status := C.MagickScaleImage(this.magickWand, C.ulong(columns), C.ulong(rows))
	if status == 0 {
		var etype int
		descr := C.MagickGetException(this.magickWand, (*C.ExceptionType)(unsafe.Pointer(&etype)))
		defer C.MagickRelinquishMemory(unsafe.Pointer(descr))
		return errors.New(fmt.Sprintf("error scale image: %s (ExceptionType = %d)", C.GoString(descr), etype))
	}

	return nil
}
开发者ID:zesus19,项目名称:nephele,代码行数:21,代码来源:image.go

示例15: Resize

func (this *Image) Resize(width int64, height int64) error {
	if this.magickWand == nil {
		return errors.New("error resizing image:magickwand is nil")
	}

	status := C.MagickResizeImage(this.magickWand, C.ulong(width), C.ulong(height), C.CubicFilter, 0.5)
	if status == 0 {
		var etype int
		descr := C.MagickGetException(this.magickWand, (*C.ExceptionType)(unsafe.Pointer(&etype)))
		defer C.MagickRelinquishMemory(unsafe.Pointer(descr))
		return errors.New(fmt.Sprintf("error resizing image: %s (ExceptionType = %d)", C.GoString(descr), etype))
	}

	return nil
}
开发者ID:zesus19,项目名称:nephele,代码行数:15,代码来源:image.go


注:本文中的C.MagickRelinquishMemory函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。