Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2011, 13:44   #1
Florento
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 35
По умолчанию Проблема с TImage, BMP, JPEG

Доброе время суток.

Пишу небольшую программу, столкнулся со следующие проблемой:

Не могу скопировать один Image в другой. Копирую так:
Код:
Image7.Picture.Bitmap.LoadFromFile('Now.jpg');

for x := 1 to 51 do
      for y := 1 to 51 do
        Image1.Canvas.Pixels[x,y]:=Image7.Canvas.Pixels[x,y];
Получаю ошибку "Can only modify an image if it contains a bitmap".

Файл Now.jpg получаю, после использования функции, которая делает скриншот из WebBrowser1;

Вот сама функция, которая делает скриншот:
Код:
procedure TForm1.WebBrowserScreenShot(const wb: TWebBrowser; const fileName: TFileName);
var
viewObject : IViewObject;
r : TRect;
bitmap : TBitmap;
begin
if wb.Document <> nil then
begin
wb.Document.QueryInterface(IViewObject, viewObject) ;
if Assigned(viewObject) then
try
bitmap := TBitmap.Create;
try
r := Rect(0, 0, wb.Width, wb.Height) ;
bitmap.Height := wb.Height;
bitmap.Width := wb.Width;
viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
with TBitMap.Create do //Тут было TJPEG.Create;
try
Assign(bitmap) ;
SaveToFile(fileName) ;
finally
Free;
end;
finally
bitmap.Free;
end;
finally
viewObject._Release;
end;
end;
end;
Вроде делаю скриншот в формате бмп, загружаю бмп. А копировать не получается. До этого делал скриншот экрана, так:
Код:
    bmp := TBitmap.Create;
    bmp.Width := 10;
    bmp.Height := 10;
    BitBlt(bmp.Canvas.Handle, 0,0, 10, 10,
    GetDC(0), X,Y,SRCCOPY);
    Image1.Width := Screen.Width;
    Image1.Height := Screen.Height;
    Image1.Picture.Assign(bmp1);
    bmp.Free;
Копировал этой функцией, и все получалось
Код:
for x := 1 to 51 do
      for y := 1 to 51 do
        Image7.Canvas.Pixels[x,y]:=Image1.Canvas.Pixels[x,y];
Кто знает в чем может быть проблема? помогите плз

Последний раз редактировалось Stilet; 16.06.2011 в 16:31.
Florento вне форума Ответить с цитированием
Старый 16.06.2011, 14:49   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

имейджи обладают свойством picture , вот с ним и работай
image7.picture := image1.picture;
phomm вне форума Ответить с цитированием
Старый 16.06.2011, 15:20   #3
Florento
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 35
По умолчанию

Если ставить просто Image1.Picture, то он пишет ошибку. Что типа того нельзя так копировать
Florento вне форума Ответить с цитированием
Старый 16.06.2011, 15:27   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Image1.Picture.Assign(Image7.Pictur e);
или же аналогично но с Picture.Graphic(или Graphics, не помню)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.06.2011, 15:39   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

А, вот так не пробовали :

Image1.Picture.Bitmap.Assign (bmp)

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 16.06.2011, 16:18   #6
Florento
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 35
По умолчанию

Сейчас попробую. Но мне надо ее не просто скопировать.

Из большой картинки определенные пиксели скопировать в маленькую. Так же нужно будет получать доступ к цвету пикселя.
Florento вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу компонент конвертер(Bmp, Png, Tif, Gif...) в Jpeg ArtGrek Компоненты Delphi 16 25.05.2011 10:05
Как оптимизировать код перевода BMP в JPEG artemavd Общие вопросы Delphi 7 12.11.2010 12:18
timage в bmp varelik Мультимедиа в Delphi 8 21.12.2009 09:55
Как загрузить в TImage Jpeg image? beemoto Общие вопросы Delphi 2 15.11.2009 14:05
Узнать цвет пикселя в Timage, если там не bmp а jpeg? TwiX Общие вопросы Delphi 4 27.09.2009 19:11