Класс BmpOptions
Summary: The API for BMP and DIB raster image format creation options provides developers
with a versatile toolset for generating custom Bitmap (BMP) and Device
Independent Bitmap (DIB) images. With this API, you can precisely define
image characteristics such as bits per pixel, compression level and compression
type, tailoring the output to meet specific requirements. This feature-rich
API empowers developers to create high-quality, customized raster images
with ease and flexibility for diverse applications.
Module: aspose.imaging.imageoptions
Full Name: aspose.imaging.imageoptions.BmpOptions
Inheritance: IMetadataContainer, IHasExifData, IHasMetadata, IHasXmpData, ImageOptionsBase
Constructors
| Name | Description |
|---|---|
| BmpOptions() | Инициализирует новый экземпляр класса BmpOptions. |
| BmpOptions(bmp_options) | Инициализирует новый экземпляр класса BmpOptions. |
Properties
| Name | Type | Access | Description |
|---|---|---|---|
| bits_per_pixel | int | r/w | Получает или задает количество бит на пиксель изображения. |
| buffer_size_hint | int | r/w | Получает или задает подсказку о размере буфера, определяющую максимальный допустимый размер для всех внутренних буферов. |
| compression | BitmapCompression | r/w | Получает или задает тип сжатия. Тип сжатия по умолчанию — BitmapCompression.BITFIELDS, который позволяет сохранять BmpImage с прозрачностью. |
| disposed | bool | r | Получает значение, указывающее, удалён ли этот экземпляр. |
| exif_data | ExifData | r/w | Получает или задает данные Exif. |
| full_frame | bool | r/w | Получает или задает значение, указывающее, включен ли [full frame]. |
| keep_metadata | bool | r/w | Получает значение, указывающее, сохранять ли оригинальные метаданные изображения при экспорте. |
| multi_page_options | MultiPageOptions | r/w | Параметры multipage |
| palette | IColorPalette | r/w | Получает или задает цветовую палитру. |
| resolution_settings | ResolutionSetting | r/w | Получает или задает параметры разрешения. |
| source | Source | r/w | Получает или задает источник, в котором создаётся изображение. |
| vector_rasterization_options | VectorRasterizationOptions | r/w | Получает или задает параметры растеризации вектора. |
| xmp_data | XmpPacketWrapper | r/w | Получает или задает контейнер метаданных XMP. |
Methods
| Name | Description |
|---|---|
| clone() | Создаёт поверхностную копию этого экземпляра. |
| try_set_metadata(metadata) | Пытается установить экземпляр metadata, если этот экземпляр Image поддерживает и реализует экземпляр IImageMetadataFormat. |
Constructor: BmpOptions()
BmpOptions()
Инициализирует новый экземпляр класса BmpOptions.
See also:
Example # 1: The following example loads a BMP image and saves it back to BMP using variou…
Example # 2: The following example creates a palettized grayscale BMP image and then saves…
Constructor: BmpOptions(bmp_options)
BmpOptions(bmp_options)
Инициализирует новый экземпляр класса BmpOptions.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| bmp_options | BmpOptions | Параметры BMP. |
Property: bits_per_pixel
Получает или задает количество бит на пиксель изображения.
See also:
Example # 1: The following example shows how to set a palette to a BMP image to reduce its…
Example # 2: The following example loads a BMP image and saves it back to BMP using variou…
Example # 3: The following example creates a palettized grayscale BMP image and then saves…
Property: compression
Получает или задает тип сжатия. Тип сжатия по умолчанию — BitmapCompression.BITFIELDS, который позволяет сохранять BmpImage с прозрачностью.
See also:
Example # 1: The following example loads a BMP image and saves it back to BMP using variou…
Example # 2: The following example creates a palettized grayscale BMP image and then saves…
Example # 3: Decompress BMP image which was previously compressed using DXT1 compression a…
Example # 4: The example shows how to export a BMP from a PNG file while keeping the alpha…
Example # 5: The example shows how to export a BMP with the RGB compression type.
Method: clone()
clone()
Создаёт поверхностную копию этого экземпляра.
Returns
| Тип | Описание |
|---|---|
| ImageOptionsBase | Поверхностная копия этого экземпляра. |
Method: try_set_metadata(metadata)
try_set_metadata(metadata)
Пытается установить экземпляр metadata, если этот экземпляр Image поддерживает и реализует экземпляр IImageMetadataFormat.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| metadata | IImageMetadataFormat | Метаданные. |
Returns
| Тип | Описание |
|---|---|
| bool | True, если экземпляр IMetadataContainer поддерживает и/или реализует экземпляр IImageMetadataFormat; иначе — false. |
Examples
This example creates a new Image file at some disk location as specified by Source property of the BmpOptions instance. Several properties for BmpOptions instance are set before creating the actual image. Especially the Source property, that refers to the actual disk location in this case.
from aspose.imaging import Image
from aspose.imaging.imageoptions import BmpOptions
from aspose.imaging.sources import FileCreateSource
#Создайте экземпляр `BmpOptions` и задайте его различные свойства.
with BmpOptions() as bmp_options:
bmp_options.bits_per_pixel = 24
#Создайте экземпляр `FileCreateSource` и назначьте его в качестве `source` для экземпляра `BmpOptions`.
#Второй параметр типа `Boolean` определяет, является ли создаваемый файл временным (is_temporal) или нет.
bmp_options.source = FileCreateSource(r"C:\temp\output.bmp", False)
#Создайте экземпляр Image и инициализируйте его экземпляром BmpOptions, вызвав метод Create.
with Image.create(bmp_options, 500, 500) as image:
#выполнить обработку изображения.
# сохранить все изменения.
image.save()
This example demonstrates the use of different classes from imageoptions package for export purposes. A gif image is loaded as an instance of Image and then exported out to several formats.
from aspose.imaging import Image
from aspose.imaging.imageoptions import BmpOptions, JpegOptions, PngOptions, TiffOptions
from aspose.imaging.fileformats.tiff.enums import TiffExpectedFormat
from os.path import join as path_join
directory = "c:\\temp\\"
#Загрузить существующее GIF‑изображение как экземпляр класса Image.
with Image.load(path_join(directory, "sample.gif")) as image:
# Экспортировать в формат BMP, используя параметры по умолчанию.
image.save(path_join(directory, "output.bmp"), BmpOptions())
# Экспортировать в формат JPEG, используя параметры по умолчанию.
image.save(path_join(directory, "output.jpg"), JpegOptions())
# Экспортировать в формат PNG, используя параметры по умолчанию.
image.save(path_join(directory, "output.png"), PngOptions())
# Экспортировать в формат TIFF, используя параметры по умолчанию.
image.save(path_join(directory, "output.tif"), TiffOptions(TiffExpectedFormat.DEFAULT))
The following example shows how to set a palette to a BMP image to reduce its output size.
from aspose.pycore import as_of
from aspose.imaging import Point, Color, Graphics, ColorPaletteHelper
from aspose.imaging.brushes import LinearGradientBrush
from aspose.imaging.fileformats.bmp import BmpImage
from aspose.imaging.imageoptions import BmpOptions
from os.path import join as path_join
# Создайте BMP‑изображение размером 100 × 100 px.
with BmpImage(100, 100) as bmpImage:
# Линейный градиент от левого верхнего до правого нижнего угла изображения.
brush = LinearGradientBrush(Point(0, 0), Point(bmpImage.width, bmpImage.height),
Color.red,
Color.green)
# Заполните всё изображение кистью линейного градиента.
gr = Graphics(bmpImage)
gr.fill_rectangle(brush, bmpImage.bounds)
# Получите ближайшую 8‑битную цветовую палитру, покрывающую как можно больше пикселей, так чтобы палитризированное изображение
# было почти визуально неотличимо от BMP без палитры
palette = ColorPaletteHelper.get_close_image_palette(bmpImage, 256)
# 8‑битная палитра содержит не более 256 цветов.
saveOptions = BmpOptions()
saveOptions.palette = palette
saveOptions.bits_per_pixel = 8
with stream_ext.create_memory_stream() as stream:
bmpImage.save(stream, saveOptions)
print(f"The size of image with palette is {stream.tell()} bytes.")
stream.seek(0)
bmpImage.save(stream)
print(f"The size of image without palette is {stream.tell()} bytes.")
# Вывод выглядит так:
# Размер изображения с палитрой составляет 11078 байт.
# Размер изображения без палитры составляет 40054 байт.
The following example loads a BMP image and saves it back to BMP using various save options.
from aspose.imaging import Image, RasterImage, ColorPaletteHelper, ResolutionSetting
from aspose.imaging.imageoptions import BmpOptions
from aspose.imaging.fileformats.bmp import BitmapCompression
import os
import aspose.pycore as aspycore
directory = "c:\\temp\\"
with Image.load(os.path.join(directory, "sample.bmp")) as image:
rasterImage = aspycore.as_of(image, RasterImage)
# Создайте BmpOptions
saveOptions = BmpOptions()
# Используйте 8 бит на пиксель, чтобы уменьшить размер выходного изображения.
saveOptions.bits_per_pixel = 8
# Установите ближайшую 8‑битную цветовую палитру, покрывающую максимальное количество пикселей изображения, так чтобы палитризированное изображение
# почти визуально не отличим от непалетизированного.
saveOptions.palette = ColorPaletteHelper.get_close_image_palette(rasterImage, 256)
# Сохранить без сжатия.
# Вы также можете использовать сжатие RLE-8, чтобы уменьшить размер выходного изображения.
saveOptions.compression = BitmapCompression.RGB
# Установите горизонтальное и вертикальное разрешение в 96 dpi.
saveOptions.resolution_settings = ResolutionSetting(96.0, 96.0)
image.save(os.path.join(directory, "sample.bmpoptions.bmp"), saveOptions)
The following example creates a palettized grayscale BMP image and then saves it to a file.
from os.path import join as path_join
from aspose.imaging import Image, ColorPaletteHelper, ResolutionSetting, Graphics, Point, Color
from aspose.imaging.sources import FileCreateSource
from aspose.imaging.imageoptions import BmpOptions
from aspose.imaging.fileformats.bmp import BitmapCompression
from aspose.imaging.brushes import LinearGradientBrush
directory = "c:\\temp\\"
createOptions = BmpOptions()
# Сохранить в файл
createOptions.source = FileCreateSource(path_join(directory, "output.palette8bit.bmp"), False)
# Используйте 8 бит на пиксель, чтобы уменьшить размер выходного изображения.
createOptions.bits_per_pixel = 8
# Установите стандартную 8‑битную градационную палитру, охватывающую все оттенки серого.
# Если обработанное изображение содержит только оттенки серого, то его палетизированная версия
# визуально не отличима от непалетизированного.
createOptions.palette = ColorPaletteHelper.create_8_bit_grayscale(False)
# Сохранить без сжатия.
# Вы также можете использовать сжатие RLE-8, чтобы уменьшить размер выходного изображения.
createOptions.compression = BitmapCompression.RGB
# Установите горизонтальное и вертикальное разрешение в 96 dpi.
createOptions.resolution_settings = ResolutionSetting(96.0, 96.0)
# Создайте BMP‑изображение размером 100 × 100 px и сохраните его в файл.
with Image.create(createOptions, 100, 100) as image:
graphics = Graphics(image)
gradientBrush = LinearGradientBrush(Point(0, 0), Point(image.width, image.height), Color.black, Color.white)
# Заполните изображение градиентом серого
graphics.fill_rectangle(gradientBrush, image.bounds)
image.save()
Decompress BMP image which was previously compressed using DXT1 compression algorithm.
from aspose.imaging import Image
from aspose.imaging.imageoptions import BmpOptions
with Image.load("CompressedTiger.bmp") as image:
image.save("DecompressedTiger.bmp", BmpOptions())
The example shows how to export a BMP from a PNG file while keeping the alpha channel, save a BMP file with transparency.
from aspose.imaging import Image
from aspose.imaging.fileformats.png import BmpOptions
source_path = "input.png"
output_path_def = "result_def.bmp"
output_path_def_2 = "result_def-2.bmp"
output_path_bitfields = "result_bitfields.bmp"
# Загрузить PNG‑изображение из файла.
with Image.load(source_path) as pngImage:
# Изображение BMP сохраняется с поддержкой прозрачности по умолчанию.
# Если вы хотите явно указать такой режим, свойство `compression` объекта BmpOptions должно быть установлено в BitmapCompression.BITFIELDS.
# Метод сжатия BitmapCompression.BITFIELDS является методом сжатия по умолчанию в BmpOptions.
# Таким образом, тот же результат экспорта BMP‑изображения с прозрачностью можно достичь любым из следующих способов.
# С неявными параметрами по умолчанию:
pngImage.save(output_path_def)
# С явными параметрами по умолчанию:
pngImage.save(output_path_def_2, BmpOptions())
# Указание метода сжатия BitmapCompression.BITFIELDS:
bmp_options = BmpOptions()
bmp_options.compression = BitmapCompression.BITFIELDS
pngImage.save(output_path_bitfields, bmp_options)
The example shows how to export a BMP with the RGB compression type.
from aspose.imaging import Image
from aspose.imaging.fileformats.bmp import BitmapCompression
from aspose.imaging.imageoptions import BmpOptions
source_path = "input.png"
output_path = "output.png"
# Загрузить PNG‑изображение из файла.
with Image.load(source_path) as pngImage:
# Изображение BMP сохраняется с поддержкой прозрачности по умолчанию, что достигается использованием метода сжатия BitmapCompression.BITFIELDS.
# Чтобы сохранить BMP‑изображение с методом сжатия RGB, необходимо указать BmpOptions со свойством `compression`, установленным в BitmapCompression.RGB.
bmp_options = BmpOptions()
bmp_options.compression = BitmapCompression.RGB
pngImage.save(output_path, bmp_options)