mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
e4ab5891aa
commit
f8c64c8f1d
@ -50,17 +50,16 @@ class Image(_magick.Image):
|
|||||||
@dynamic_property
|
@dynamic_property
|
||||||
def format(self):
|
def format(self):
|
||||||
def fget(self):
|
def fget(self):
|
||||||
ans = super(Image, self).format
|
return self.format_.decode('utf-8', 'ignore').lower()
|
||||||
return ans.decode('utf-8', 'ignore').lower()
|
|
||||||
def fset(self, val):
|
def fset(self, val):
|
||||||
super(Image, self).format = str(val)
|
self.format_ = str(val)
|
||||||
return property(fget=fget, fset=fset, doc=_magick.Image.format.__doc__)
|
return property(fget=fget, fset=fset, doc=_magick.Image.format_.__doc__)
|
||||||
|
|
||||||
|
|
||||||
@dynamic_property
|
@dynamic_property
|
||||||
def size(self):
|
def size(self):
|
||||||
def fget(self):
|
def fget(self):
|
||||||
return super(Image, self).size
|
return self.size_
|
||||||
def fset(self, val):
|
def fset(self, val):
|
||||||
filter = 'CatromFilter'
|
filter = 'CatromFilter'
|
||||||
if len(val) > 2:
|
if len(val) > 2:
|
||||||
@ -69,9 +68,8 @@ class Image(_magick.Image):
|
|||||||
blur = 1.0
|
blur = 1.0
|
||||||
if len(val) > 3:
|
if len(val) > 3:
|
||||||
blur = float(val[3])
|
blur = float(val[3])
|
||||||
super(Image, self).format = (int(val[0]), int(val[1]), filter,
|
self.size_ = (int(val[0]), int(val[1]), filter, blur)
|
||||||
blur)
|
return property(fget=fget, fset=fset, doc=_magick.Image.size_.__doc__)
|
||||||
return property(fget=fget, fset=fset, doc=_magick.Image.size.__doc__)
|
|
||||||
|
|
||||||
|
|
||||||
def save(self, path, format=None):
|
def save(self, path, format=None):
|
||||||
|
@ -52,10 +52,15 @@ static PyObject *
|
|||||||
magick_Image_load(magick_Image *self, PyObject *args, PyObject *kwargs) {
|
magick_Image_load(magick_Image *self, PyObject *args, PyObject *kwargs) {
|
||||||
const char *data;
|
const char *data;
|
||||||
Py_ssize_t dlen;
|
Py_ssize_t dlen;
|
||||||
|
MagickBooleanType res;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "s#", &data, &dlen)) return NULL;
|
if (!PyArg_ParseTuple(args, "s#", &data, &dlen)) return NULL;
|
||||||
|
|
||||||
if (!MagickReadImageBlob(self->wand, data, dlen))
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
res = MagickReadImageBlob(self->wand, data, dlen);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
|
if (!res)
|
||||||
return magick_set_exception(self->wand);
|
return magick_set_exception(self->wand);
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
@ -75,7 +80,10 @@ magick_Image_export(magick_Image *self, PyObject *args, PyObject *kwargs) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
data = MagickGetImageBlob(self->wand, &len);
|
data = MagickGetImageBlob(self->wand, &len);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
if (data == NULL || len < 1)
|
if (data == NULL || len < 1)
|
||||||
return magick_set_exception(self->wand);
|
return magick_set_exception(self->wand);
|
||||||
|
|
||||||
@ -100,6 +108,7 @@ magick_Image_size_setter(magick_Image *self, PyObject *val, void *closure) {
|
|||||||
Py_ssize_t width, height;
|
Py_ssize_t width, height;
|
||||||
FilterTypes filter;
|
FilterTypes filter;
|
||||||
double blur;
|
double blur;
|
||||||
|
MagickBooleanType res;
|
||||||
|
|
||||||
if (val == NULL) {
|
if (val == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
@ -126,7 +135,11 @@ magick_Image_size_setter(magick_Image *self, PyObject *val, void *closure) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!MagickResizeImage(self->wand, width, height, filter, blur)) {
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
res = MagickResizeImage(self->wand, width, height, filter, blur);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
magick_set_exception(self->wand);
|
magick_set_exception(self->wand);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -143,6 +156,25 @@ magick_Image_format_getter(magick_Image *self, void *closure) {
|
|||||||
return Py_BuildValue("s", fmt);
|
return Py_BuildValue("s", fmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
magick_Image_format_setter(magick_Image *self, PyObject *val, void *closure) {
|
||||||
|
char *fmt;
|
||||||
|
|
||||||
|
if (val == NULL) {
|
||||||
|
return -1;
|
||||||
|
PyErr_SetString(PyExc_TypeError, "Cannot delete image format");
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt = PyString_AsString(val);
|
||||||
|
if (fmt == NULL) return -1;
|
||||||
|
|
||||||
|
if (!MagickSetImageFormat(self->wand, fmt)) {
|
||||||
|
PyErr_SetString(PyExc_ValueError, "Unknown image format");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static PyMethodDef magick_Image_methods[] = {
|
static PyMethodDef magick_Image_methods[] = {
|
||||||
{"load", (PyCFunction)magick_Image_load, METH_VARARGS,
|
{"load", (PyCFunction)magick_Image_load, METH_VARARGS,
|
||||||
@ -157,13 +189,13 @@ static PyMethodDef magick_Image_methods[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static PyGetSetDef magick_Image_getsetters[] = {
|
static PyGetSetDef magick_Image_getsetters[] = {
|
||||||
{(char *)"size",
|
{(char *)"size_",
|
||||||
(getter)magick_Image_size_getter, (setter)magick_Image_size_setter,
|
(getter)magick_Image_size_getter, (setter)magick_Image_size_setter,
|
||||||
(char *)"Image size (width, height). When setting pass in (width, height, filter, blur). See MagickResizeImage docs.",
|
(char *)"Image size (width, height). When setting pass in (width, height, filter, blur). See MagickResizeImage docs.",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
{(char *)"format",
|
{(char *)"format_",
|
||||||
(getter)magick_Image_format_getter, NULL,
|
(getter)magick_Image_format_getter, (setter)magick_Image_format_setter,
|
||||||
(char *)"Image format",
|
(char *)"Image format",
|
||||||
NULL},
|
NULL},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user