Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.034 c
14-1103810851
inic
2004-12-23 17:07
2005.01.16
Брутальный картридж :))


14-1104335912
}|{yk
2004-12-29 18:58
2005.01.16
Как вам такой поворот?


1-1104166345
ПоГибель
2004-12-27 19:52
2005.01.16
Делфи 8


14-1103982756
OneFragLeft
2004-12-25 16:52
2005.01.16
Войти на другой комп


14-1104378641
Steepe Wolf
2004-12-30 06:50
2005.01.16
Посмотрите сайтик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский