| 
| 
 | Вопрос # 4 648/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Мне дано изображение загружаемое из файла, 24 битное
 BMP:=TBitmap.Create;
 Image1.Canvas.Draw(0,0,bmp);
 подскажите как сохранить в масив попиксельно это изображение,
 а после этот мосив снова воспроизвести в картинку.
 
|  |   Вопрос задал: Volt-norD (статус: Посетитель)Вопрос отправлен: 11 октября 2010, 19:15
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Volt-norD!Решение в лоб. Достучаться до каждого пикселя можно через свойство pixels[x, y]. Как читать, так и писать.
 поэтому код выглядит так
 
 var i,j:integer;
begin
  for i:= 0 to bmp.width - 1 do
    for j:= 0 to bmp.height-1 do
      massiv[i,j] := bmp.canvas.pixels[i,j]; // читаем с "картинки" в массив
// или эту строку наоборот
     bmp.canvas.pixels[i,j] := massiv[i,j]; // читаем с массива в "картинку"
end;И все. главное обеспечить место в массиве.
 Другое дело, что эта функция не супер быстрая. Для этого достаточно погуглить на тему метода ScanLine.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 11 октября 2010, 20:31
 Оценка за ответ: 4
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 15 октября 2010, 10:32; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 12 октября 2010, 14:12 [#1]: Цитата (Volt-norD): подскажите как сохранить в масив попиксельно это изображение, а после этот мосив снова воспроизвести в картинку. Хотелось бы узнать, зачем это нужно?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 12 октября 2010, 14:44 [#2]:ну может человек хочет наложить какой то спецэффект. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 12 октября 2010, 14:58 [#3]: Цитата (Вадим К): ну может человек хочет наложить какой то спецэффект.  Чой-то меня терзают смутные сомнения на счёт спецэффектов...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 12 октября 2010, 15:06 [#4]:хорошо, пойду ещё дальше - может он хочет сохранить картинку в какой то экзотический формат. Например xwd. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 12 октября 2010, 15:11 [#5]: Цитата (Вадим К): хорошо, пойду ещё дальше - может он хочет сохранить картинку в какой то экзотический формат. Например xwd.  Тогда почему массив, а не TMemoryStream, например?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 12 октября 2010, 15:15 [#6]:ну так само собой напрашивается - "массив пикселей". не поток пикселей, не кучка  Да и с массивом может быть проще работать.
 
 А может все проще. Просто преподаватель такое попросил. И все.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 12 октября 2010, 15:18 [#7]: Цитата (Вадим К): А может все проще. Просто преподаватель такое попросил. И все.  Вполне возможно. Поработав не один год экспертом, я уже перестал удивляться тупости некоторых преподов, которые сами не знают, что преподают.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  12 октября 2010, 22:09: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Графика (2D и 3D) в приложениях модератором Ерёмин А.А. 
|   | Byte (статус: Посетитель), 15 октября 2010, 01:15 [#8]:min@y™: Просто плюс стопицоттыщ! |  
|   | min@y™ (статус: Доктор наук), 15 октября 2010, 08:45 [#9]: Цитата (Byte): Просто плюс стопицоттыщ!  Ты о чём? Не понял...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Byte (статус: Посетитель), 15 октября 2010, 10:32 [#10]:min@y™:  Я соглашаюсь с тобой насчет тупости некоторых преподов)(Твое предыдущее сообщение в этом мини-форуме). |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |