Главная страница
    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.037 c
1-1104251667
Shnabs
2004-12-28 19:34
2005.01.16
Прикол какой-то


1-1104408402
denis24
2004-12-30 15:06
2005.01.16
RichEdit


14-1104062585
Андрей Червенко
2004-12-26 15:03
2005.01.16
Зацените новую программу Notepad Plus


1-1104328264
Egloo
2004-12-29 16:51
2005.01.16
String vs. WideString в DLL


4-1101722965
grigory
2004-11-29 13:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский