Как да заредите изображение в масив

Хора, моля отговорете на въпроса как масивът да не съдържа string / real и т.н. данни, като например картина. И възможно ли е изобщо да се направи това?

> Чегевара (31.12.04 20:01)

Това може да се направи. Но защо имате такава нужда да съхранявате "картина" в масив?

Е, просто искам да опитам да направя играчка, без да използвам DelphiH и други методи. Знам, че това не е най-икономичният начин за компютърни ресурси, вече имам няколко други мисли, но все пак искам да опитам.

> [2] Чегевара (31.12.04 20:18)

Има много начини за съхраняване на изображение в масив. Например, можете да съхранявате информация за цвета на всеки пиксел в масив. Да приемем, че във формата има компонент Image1: TImage, в който се зарежда изображението. След това може да бъде "подреден" по следния начин:

var I, J: Цяло число; Картина: масив от масив от TColor; започнете SetLength(Картина, Изображение1.Картина.Височина, Изображение1.Картина.Ширина); за I := 0 до High(Picture) направете for J := 0 до High(Picture[I]) направете 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 и др.). Можете да заредите съдържанието на този файл в обикновен масив от байтове (отворете файл от Byte, пишете с Write, затворете) и след това да го използвате.

Изборът зависи от това какви методи предпочитате да работите с тези данни по-късно и кактези методи са ресурсоемки.

Затова нека да си взема - започвам да празнувам. :-)

С идването (или идването)!

Благодаря ви много, ще помисля, вероятно ще използвам друг метод, тъй като този вероятно ще изяде много ресурси на компютъра при зареждане.Честит празник и на теб!

може би ще съхраните пътя до изображението в масив? Много е грозно - самата снимка

Да, и аз реших да направя нещо подобно, докато не измисля по-добро.

Картините трябва да се съхраняват в TBitmaps. Как да ги редактирате - прочетете в статията "Сложи точка".

Честита Нова година, между другото.

Да, явно не. Във всеки случай не по-малко от 100 пъти - това е сигурно.

Е, първо, вероятно искахте да кажете, че array[i,j] изисква 100 пъти повече памет от Canvas.Pixels[i,j], а не обратното. И второ, можете ли да обясните каква ще бъде загубата на памет в сравнение с изображението след зареждане на пикселните данни в масив и унищожаване на изображението (защото то вече не е необходимо за тази задача)?

Описах себе си. Имах предвид времето, не паметта.