Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 648

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Мне дано изображение загружаемое из файла, 24 битное
BMP:=TBitmap.Create;
Image1.Canvas.Draw(0,0,bmp);
подскажите как сохранить в масив попиксельно это изображение,
а после этот мосив снова воспроизвести в картинку.

Volt-norD Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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™

min@y™ (статус: Доктор наук), 12 октября 2010, 14:12 [#1]:

Цитата (Volt-norD):

подскажите как сохранить в масив попиксельно это изображение, а после этот мосив снова воспроизвести в картинку.

Хотелось бы узнать, зачем это нужно?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 12 октября 2010, 14:44 [#2]:

ну может человек хочет наложить какой то спецэффект.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 октября 2010, 14:58 [#3]:

Цитата (Вадим К):

ну может человек хочет наложить какой то спецэффект.

Чой-то меня терзают смутные сомнения на счёт спецэффектов...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 12 октября 2010, 15:06 [#4]:

хорошо, пойду ещё дальше - может он хочет сохранить картинку в какой то экзотический формат. Например xwd.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 октября 2010, 15:11 [#5]:

Цитата (Вадим К):

хорошо, пойду ещё дальше - может он хочет сохранить картинку в какой то экзотический формат. Например xwd.

Тогда почему массив, а не TMemoryStream, например?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 12 октября 2010, 15:15 [#6]:

ну так само собой напрашивается - "массив пикселей". не поток пикселей, не кучка:)
Да и с массивом может быть проще работать.

А может все проще. Просто преподаватель такое попросил. И все.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 октября 2010, 15:18 [#7]:

Цитата (Вадим К):

А может все проще. Просто преподаватель такое попросил. И все.

Вполне возможно. Поработав не один год экспертом, я уже перестал удивляться тупости некоторых преподов, которые сами не знают, что преподают.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

12 октября 2010, 22:09: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Графика (2D и 3D) в приложениях модератором Ерёмин А.А.

Byte

Byte (статус: Посетитель), 15 октября 2010, 01:15 [#8]:

min@y™: Просто плюс стопицоттыщ!
min@y™

min@y™ (статус: Доктор наук), 15 октября 2010, 08:45 [#9]:

Цитата (Byte):

Просто плюс стопицоттыщ!

Ты о чём? Не понял...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Byte

Byte (статус: Посетитель), 15 октября 2010, 10:32 [#10]:

min@y™: Я соглашаюсь с тобой насчет тупости некоторых преподов)(Твое предыдущее сообщение в этом мини-форуме).

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.02 сек.