Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизКак загрузить в массив картинку Найти похожие ветки
← →
Cheguevara (2004-12-31 20:01) [0]Народ, ответьтте пожалста на вопрос, как сделать так, чтоб массив содержал не string/real и тд. данные, а например картинку. И можно ли вообще такое сделать.
← →
begin...end © (2004-12-31 20:04) [1]> Cheguevara (31.12.04 20:01)
Такое сделать можно. Но почему у Вас возникла такая необходимость - хранить "картинку" в массиве?
← →
Cheguevara (2004-12-31 20:18) [2]Ну просто я хочу попробовать сделать игрушку не прибегая к помощи дельфиХа и других способов. Знаю что это не самый экономичный к ресурсам компа способ, у меня уже есть несоклько других мыслей, но всё равно я хочу его попробовать.
← →
begin...end © (2004-12-31 20:45) [3]> [2] Cheguevara (31.12.04 20:18)
Хранить изображение в массиве можно разными способами. Например, можно хранить в массиве информацию о цвете каждого пикселя. Допустим, есть на форме компонент Image1: TImage, в который загружена картинка. Тогда её можно "занести в массив" так:var
I, J: Integer;
Picture: array of array of TColor;
begin
SetLength(Picture, Image1.Picture.Height, Image1.Picture.Width);
for I := 0 to High(Picture) do
for J := 0 to High(Picture[I]) do
Picture[I, J] := Image1.Canvas.Pixels[I, J]
end.
Теперь можно "нарисовать" эту картинку на другом экземпляре TImage - Image2:var
I, J: Integer;
begin
for I := 0 to High(Picture) do
for J := 0 to High(Picture[I]) do
Image2.Canvas.Pixels[I, J] := Picture[I, J]
end.
Такой способ требует SizeOf(TColor) * 2 = 8 байт для хранения информации о КАЖДОМ пикселе.
Есть и ещё способы. Например, имеется файл с картинкой (BMP, JPG и т.д.). Можно загрузить содержимое этого файла в обычный массив байт (открыть file of Byte, записать с помощью Write, закрыть), а потом использовать.
Выбор зависит от того, какими методами Вы предпочтёте потом с этими данными работать, и того, насколько эти методы требовательны к ресурсам.
Засим позвольте откланяться - начинаю праздновать. :-)
С наступающим (или наступившим)!
← →
Cheguevara (2004-12-31 20:54) [4]Спасбо баальшое, подумаю, наверное буду использовать всётаки другой способ, так как этот много ресурсов у компа при загрузке жрать будет наверное. Тя тоже с праздником!
← →
Vasya.ru © (2004-12-31 22:22) [5]а может путь к картинке в массиве хранить будешь? Уж очень уродски это - саму картинку
← →
Cheguevara (2004-12-31 22:44) [6]Ага, я тоже так решил покачто сделать, пока не придумаю получше чегонить.
← →
GrayFace © (2004-12-31 23:38) [7]begin...end © (31.12.04 20:45) [3]
Ну и способ! В 2 раза больше памяти и в 100 раз больше времени при конвертации. Кстати, цифра 2 откуда взялась?
Картинки надо хранить в TBitmap-ах. Как их редактировать - почитай статью "Поставить точку".
← →
GrayFace © (2004-12-31 23:39) [8]С наступившим Новым Г, кстати.
← →
begin...end © (2004-12-31 23:44) [9]> GrayFace © (31.12.04 23:38) [7]
> Ну и способ!
Способ плохой. Никто и не говорил, что он хороший.
> В 2 раза больше памяти и в 100 раз больше времени при конвертации
Чем когда?
> Кстати, цифра 2 откуда взялась?
Ошибся.
← →
GrayFace © (2005-01-01 00:28) [10]begin...end © (31.12.04 23:44) [9]
Чем когда?
На один Canvas.Pixels[i,j] требуется в 100 раз больше памяти, чем на Array[i,j] и чем на проделывание этого, используя TBitmap.Scanline.
← →
begin...end © (2005-01-01 00:36) [11]> [10] GrayFace © (01.01.05 00:28)
> На один Canvas.Pixels[i,j] требуется в 100 раз больше памяти,
> чем на Array[i,j]
Ничего не путаешь?
← →
GrayFace © (2005-01-01 00:41) [12]Да вроде бы нет. Во всяком случае, не меньше, чем в 100 раз - это точно.
← →
begin...end © (2005-01-01 00:47) [13]> [12] GrayFace © (01.01.05 00:41)
Ну, во-первых, ты, наверное, хотел сказать, что на array[i,j] требуется в 100 раз больше памяти, чем на Canvas.Pixels[i,j], а не наоборот. А во-вторых, не мог бы ты пояснить, в чём будет проигрыш в памяти по сравнению с Image после загрузки данных о пикселях в массив и уничтожения Image (т.к. оно более для данной задачи не нужно)?
← →
GrayFace © (2005-01-01 01:39) [14]Я описался. Я имел ввиду время, а не память.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c