Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Декомпресс JPEG в Bitmap 
:(
    Опции темы
RedArrow
Дата 21.8.2003, 23:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Имеется такая проблема: Загружаю в TImage JPEG-файл, потом необходимо скопировать его часть в другой TImage. В Дельфи имеется функция CopyRect, но она работает только с битмапом, т.е. прежде, чем копировать, необходимо исходное изображение перевести в битмап. Нашел функцию TJPEGImage.DIBNeeded, но она почему-то не хочет работать. Или я что неправильно делаю? Помогите, плиз!!!!! Очень нужно!!!
  Вверх
December
Дата 22.8.2003, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



У TImage есть Canvas, который по определению битмап. С ним всё получится, попробуй через него.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 22.8.2003, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Переводить в битмап просто - TBitMap.Assign(JpegImage)


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
<Spawn>
Дата 22.8.2003, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



А можно воспользоваться BltBit:
Код
BitBlt(Image2.Canvas.Handle,10,10,50,100,Image1.Canvas.Handle,0,0,SRCCOPY);


Это сообщение отредактировал(а) <Spawn> - 22.8.2003, 10:49


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
BoBaH
Дата 26.8.2003, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 29.11.2002

Репутация: нет
Всего: нет



А еще можно так scrncap.pas
Код

unit ScrnCap;
interface
uses WinTypes, WinProcs, Forms, Classes, Graphics, Controls;

{ Копирует прямоугольную область экрана }
function CaptureScreenRect(ARect : TRect) : TBitmap;
{ Копирование всего экрана }
function CaptureScreen : TBitmap;
{ Копирование клиентской области формы или элемента }
function CaptureClientImage(Control : TControl) : TBitmap;
{ Копирование всей формы элемента }
function CaptureControlImage(Control : TControl) : TBitmap;

{===============================================================}
implementation
function GetSystemPalette : HPalette;
var PaletteSize  : integer;
   LogSize      : integer;
   LogPalette   : PLogPalette;
   DC           : HDC;
   Focus        : HWND;
begin
  result:=0;
  Focus:=GetFocus;
  DC:=GetDC(Focus);
  try
     PaletteSize:=GetDeviceCaps(DC, SIZEPALETTE);
     LogSize:=SizeOf(TLogPalette)+(PaletteSize-1)*SizeOf(TPaletteEntry);
     GetMem(LogPalette, LogSize);
     try
        with LogPalette^ do
        begin
           palVersion:=$0300;
           palNumEntries:=PaletteSize;
           GetSystemPaletteEntries(DC, 0, PaletteSize, palPalEntry);
        end;
        result:=CreatePalette(LogPalette^);
     finally
        FreeMem(LogPalette, LogSize);
    end;
  finally
     ReleaseDC(Focus, DC);
  end;
end;


function CaptureScreenRect(ARect : TRect) : TBitmap;
var ScreenDC : HDC;
begin
  Result:=TBitmap.Create;
  with result, ARect do
  begin
     Width:=Right-Left;
     Height:=Bottom-Top;
     ScreenDC:=GetDC(0);
     try
        BitBlt(Canvas.Handle, 0,0,Width,Height,ScreenDC, Left, Top, SRCCOPY );
     finally
        ReleaseDC(0, ScreenDC);
     end;
     Palette:=GetSystemPalette;
  end;
end;

function CaptureScreen : TBitmap;
begin
  with Screen do Result:=CaptureScreenRect(Rect(0,0,Width,Height));
end;

function CaptureClientImage(Control : TControl) : TBitmap;
begin
  with Control, Control.ClientOrigin do
  result:=CaptureScreenRect(Bounds(X,Y,ClientWidth,ClientHeight));
end;

function CaptureControlImage(Control : TControl) : TBitmap;
begin
  with Control do
  if Parent=Nil then result:=CaptureScreenRect(Bounds(Left,Top,Width,Height)) else
  with Parent.ClientToScreen(Point(Left, Top)) do
  result:=CaptureScreenRect(Bounds(X,Y,Width,Height));
end;

end.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.