BLOB в растровое изображение в axapta

Я объявил переменную как
Bitmap image;
Container storeImg;

Я сохраняю изображение как
storeImg+= image;
изображение хранится как тип BLOB в контейнере

Позже, когда я пытаюсь получить изображение в переменной Bitmap, например,
Bitmap image2;
image2 = conpeek(storeImg,1);

Я получаю "ошибку несоответствия операнда"
Мой вопрос: я объявил изображение как растровое изображение и сохранил его в контейнере, тогда почему возникает ошибка, когда я пытаюсь получить то же самое только в растровом типе данных ?

Заранее спасибо.


person piku    schedule 26.09.2012    source источник


Ответы (1)


Расширенный тип данных Bitmap на самом деле является контейнером.

Добавление контейнеров дает конкатенацию, которая может быть (частью) вашей проблемы:

static void BitmapTest(Args _args)
{
    Bitmap image1 = [1,2,3];
    Bitmap image2 = [7,8,9];
    Container storeImg;
    ;
    storeImg += image1;
    storeImg += image2;
    print conlen(storeImg);
    pause;
}

Это печатает 6, а не 2, как вы можете предположить.

Также blob и container это не одно и то же:

static void BitmapTest(Args _args)
{
    BinData b = new BinData();
    Bitmap image1 = b.getData();
    Bitmap image2 = b.getData();
    Container storeImg;
    ;
    storeImg += image1;
    storeImg += image2;
    image2 = conpeek(storeImg,1);
    pause;
}

Это не удастся, потому что storeImg содержит два значения blob.

Измените назначения на:

    storeImg += [image1];
    storeImg += [image2];

Это сработает, потому что теперь storeImg содержит два значения container (содержащие blob).

Также см. Загрузить и сохранить файл из и в поле контейнера< /а>

person Jan B. Kjeldsen    schedule 26.09.2012
comment
большое спасибо за подробное объяснение еще раз. Я думал передать значение BLOB, как и любой другой тип данных, также я не знал многого о сходстве между контейнером и растровым изображением (хотя я заметил EDT растрового изображения как контейнер растрового изображения). Еще раз спасибо. - person piku; 26.09.2012