构造一个纹理。
语法
texture ST_MakeTexture(integer width,
integer height,
cstring url,
boolean to_internal default false,
integer depth default 3,
cstring format default 'JPEG',
cstring compression default 'None',
cstring wrap default 'Wrap');
texture ST_MakeTexture(cstring table_name,
cstring column_name,
cstring key_value,
cstring schema_name default 'public');
texture ST_MakeTexture(integer width,
integer height,
bytea data,
integer depth default 3,
cstring format default 'JPEG',
cstring compression default 'None',
cstring wrap default 'Wrap');
参数
参数名称 | 描述 |
---|---|
width | 纹理图像的宽度。 |
height | 纹理图像的高度。 |
url | 纹理图像的路径地址。 |
to_internal | 是否转为内部存储模式,默认为false。 |
depth | 纹理图像的象元深度,必须为以下值:
|
compression | 纹理图像数据流的压缩方式,必须为以下值:
|
format | 纹理图像的格式,必须为以下值:
|
wrap | 纹理图像环绕方式,必须为以下值:
|
table_name | 已存在texture的表名。 |
column_name | 已存在texture的列名。 |
key_value | 已存在texture的查询唯一ID,用于where条件中。 |
schema_name | 已存在texture的方案名,默认为public。 |
data | 纹理图片的二进制数据流。 |
描述
根据纹理图片二进制的存储形态,可以划分为三种形式,可以按照实际场景需求,灵活制定纹理的存储方案:
- 纹理图片的二进制直接存储在数据库中,优势是不需要进行外部关联,劣势是数据库内数据量会比较大。
- 纹理图片的二进制存储在外部文件中,优势是数据库中存储容量较低,劣势是访问时性能较低。
- 纹理数据存储在数据库单独的表中,使用时引用该数据库存储信息。
示例
-- create texture table
CREATE TABLE textures(id integer, the_texture texture);
-- Insert a 225*225 RGBA PNG file, with internal store binary stream
INSERT INTO textures VALUES (1, ST_MakeTexture(225,225,'path/example.png'::cstring, true, 4, 'PNG'));
-- Insert a 225*255 RGB JPEG file, with binary stream in file
INSERT INTO textures VALUES (2, ST_MakeTexture(225,225,'path/example.jpeg'::cstring, false, 3, 'JPEG'));
-- Insert a 256*256 RGB JPEG file, providing the binary stream
INSERT INTO textures VALUES (3, ST_MakeTexture(256,256, '\x123abcd...'::bytea));
-- insert a reference texture which is id=1 in the same table
INSERT INTO textures VALUES (4, ST_MakeTexture('textures'::cstring, 'the_texture'::cstring, 'id=1'));