예제 #1
0
 def test_image(self):
     image = pyvips.Image.new_from_file(JPEG_FILE)
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.image_type)
     gv.set(image)
     value = gv.get()
     self.assertEqual(value, image)
예제 #2
0
 def test_array_image(self):
     image = pyvips.Image.new_from_file(JPEG_FILE)
     r, g, b = image.bandsplit()
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.array_image_type)
     gv.set([r, g, b])
     value = gv.get()
     self.assertEqual(value, [r, g, b])
예제 #3
0
 def test_blob(self):
     with open(JPEG_FILE, 'rb') as f:
         blob = f.read()
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.blob_type)
     gv.set(blob)
     value = gv.get()
     self.assertEqual(value, blob)
예제 #4
0
    def test_bool(self):
        gv = pyvips.GValue()
        gv.set_type(pyvips.GValue.gbool_type)
        gv.set(True)
        value = gv.get()
        self.assertEqual(value, True)

        gv.set(False)
        value = gv.get()
        self.assertEqual(value, False)
예제 #5
0
    def test_bool(self):
        gv = pyvips.GValue()
        gv.set_type(pyvips.GValue.gbool_type)
        gv.set(True)
        value = gv.get()
        assert value

        gv.set(False)
        value = gv.get()
        assert not value
예제 #6
0
 def test_flags(self):
     # the OperationFlags enum is created when the first op is made --
     # make it ourselves in case we are run before that
     pyvips.vips_lib.vips_operation_flags_get_type()
     operationflags_gtype = pyvips.gobject_lib. \
         g_type_from_name(b'VipsOperationFlags')
     gv = pyvips.GValue()
     gv.set_type(operationflags_gtype)
     gv.set(12)
     value = gv.get()
     self.assertEqual(value, 12)
예제 #7
0
 def test_enum(self):
     # the Interpretation enum is created when the first image is made --
     # make it ourselves in case we are run before the first image
     pyvips.vips_lib.vips_interpretation_get_type()
     interpretation_gtype = pyvips.gobject_lib. \
         g_type_from_name(b'VipsInterpretation')
     gv = pyvips.GValue()
     gv.set_type(interpretation_gtype)
     gv.set('xyz')
     value = gv.get()
     self.assertEqual(value, 'xyz')
예제 #8
0
    def set(self, name, value):
        """Set a GObject property.

        The value is converted to the property type, if possible.

        """

        logger.debug('VipsObject.set: name = %s, value = %s', name, value)

        gtype = self.get_typeof(name)

        gv = pyvips.GValue()
        gv.set_type(gtype)
        gv.set(value)
        go = ffi.cast('GObject *', self.pointer)
        gobject_lib.g_object_set_property(go, _to_bytes(name), gv.pointer)
예제 #9
0
    def get(self, name):
        """Get a GObject property.

        The value of the property is converted to a Python value.

        """

        logger.debug('VipsObject.get: name = %s', name)

        pspec = self._get_pspec(name)
        if pspec is None:
            raise Error('Property not found.')
        gtype = pspec.value_type

        gv = pyvips.GValue()
        gv.set_type(gtype)
        go = ffi.cast('GObject *', self.pointer)
        gobject_lib.g_object_get_property(go, _to_bytes(name), gv.pointer)

        return gv.get()
예제 #10
0
 def test_int(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gint_type)
     gv.set(12)
     value = gv.get()
     self.assertEqual(value, 12)
예제 #11
0
 def test_array_double(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.array_double_type)
     gv.set([1.1, 2.1, 3.1])
     value = gv.get()
     self.assertAlmostEqualObjects(value, [1.1, 2.1, 3.1])
예제 #12
0
 def test_array_int(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.array_int_type)
     gv.set([1, 2, 3])
     value = gv.get()
     self.assertAlmostEqualObjects(value, [1, 2, 3])
예제 #13
0
 def test_string(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gstr_type)
     gv.set('banana')
     value = gv.get()
     self.assertEqual(value, 'banana')
예제 #14
0
 def test_int(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gint_type)
     gv.set(12)
     value = gv.get()
     assert value == 12
예제 #15
0
 def test_array_int(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.array_int_type)
     gv.set([1, 2, 3])
     value = gv.get()
     assert_almost_equal_objects(value, [1, 2, 3])
예제 #16
0
 def test_string(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gstr_type)
     gv.set('banana')
     value = gv.get()
     assert value == 'banana'
예제 #17
0
 def test_double(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gdouble_type)
     gv.set(3.1415)
     value = gv.get()
     assert value == 3.1415
예제 #18
0
 def test_double(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.gdouble_type)
     gv.set(3.1415)
     value = gv.get()
     self.assertEqual(value, 3.1415)
예제 #19
0
 def test_uint64(self):
     gv = pyvips.GValue()
     gv.set_type(pyvips.GValue.guint64_type)
     gv.set(2 ** 64 - 1)  # G_MAXUINT64
     value = gv.get()
     assert value == 2 ** 64 - 1