Как да заредите изображение в масив
Хора, моля отговорете на въпроса как масивът да не съдържа 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], а не обратното. И второ, можете ли да обясните каква ще бъде загубата на памет в сравнение с изображението след зареждане на пикселните данни в масив и унищожаване на изображението (защото то вече не е необходимо за тази задача)?
Описах себе си. Имах предвид времето, не паметта.