-
А исходных текстов с использованием intel...jpeg у когонибудь есть ?
-
какие тексты нужны? заголовки к интеловской библиотеке (IJL.pas) в комплекте с самой библиотекой... а там все просто JPEG_IO.pas:
procedure SaveBmpToJpegFile (Bitmap:TBitmap;const FileName:string; const Quality: integer); procedure SaveBmpToJpegStream(Bitmap:TBitmap;Stream: TMemoryStream; const Quality: integer); procedure LoadBmpFromJpegFile(Bitmap:TBitmap;const FileName:string; const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull); procedure LoadBmpFromJpegStream(bitmap: TBitmap; Stream:TMemoryStream; const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);
-
kolobok776@ya.ru
Мне бы исходники просмотра удаленного рабочего стола , можно даже без управления , только чтобы процессор особо программа не нагрудала , может есть у кого , заранее благодарна ! kolobok776@ya.ru
-
А исходных текстов на все написанное выше может выложим ?
-
> PascalC (25.11.08 13:14) [4]
> а вообще -люблю изобретать велосипеды :)
> Поэтому и спрашиваю, может у кого исходники на делфях завалялись, > которые не жалко?
Как-то не вяжутся эти фразы. Или копи-паст уже стал называться изобретательством?
-
Света (20.02.10 12:32) [22] только чтобы процессор особо программа не нагрудала с этим как раз основная проблема: 1. основной напрягатор проца - сжатие картинки... 2. чтоб снять напрягу - нужно убрать сжатие 3. но без сжатия сетка колом встанет :) решение - передавать сжимая, но не каждый кадр, а только изменившуюся часть, а вот как определить что изменилось - другая задача и решается она по разному (от тупого сравнивания битмапов до драйвера дисплея)...
простой пример отправил на мыло
-
Ага спасибо получила . Буду думать как обуздать mirror driver/
-
кого интересует эта тема , пишите у меня усе получилось - на делфи тока!
-
сюда выкладывай... или линк на архив залитый на файл хостинг (типа iFolder.ru)
-
Поче6муто не крепится , завтра привреплю
-
uses Windows, SysUtils, Graphics, MultiMon;
type EMonitorCaptureException = class(Exception);
TCaptureContext = (ccActiveWindow,ccDesktopMonitor,ccActiveMonitor, ccSpecificMonitor,ccAllMonitors);
function MonitorCount : Integer;
procedure CaptureScreen(aCaptureContext : TCaptureContext; destBitmap : TBitmap;aMonitorNum : Integer = 1);
procedure CaptureRect(aCaptureRect : TRect;destBitMap : TBitmap); inline;
procedure CaptureDeviceContext(SrcDC: HDC;aCaptureRect : TRect;destBitMap : TBitmap); inline;
function GetMonInfoByIdx(MonIdx : Integer) : MONITORINFO;
implementation
type MonIndex = record Idx : Integer; Cnt : Integer; MonInfo : MONITORINFO; end; PMonIndex = ^MonIndex;
function MonCountCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall; begin inc(Integer(pointer(l)^)); result := true; end;
function MonitorCount : Integer; begin result := 0; EnumDisplayMonitors(0,nil,MonCountCB, Integer(@result)); end;
function MonInfoCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall; var MI : PMonIndex; begin MI := PMonIndex(pointer(l)); Inc(MI.Cnt); if MI.Cnt = MI.Idx then GetMonitorInfo(hm,@(MI.MonInfo)); result := true; end;
function GetMonInfoByIdx(MonIdx : Integer) : MONITORINFO; var MI : MonIndex; begin MI.MonInfo.cbSize := SizeOf(MI.MonInfo); MI.Idx := MonIdx; MI.Cnt := 0; EnumDisplayMonitors(0,nil,MonInfoCB, Integer(@MI)); result := MI.MonInfo; end;
procedure CaptureScreen(aCaptureContext : TCaptureContext; destBitmap : TBitmap;aMonitorNum : Integer); var DC : HDC; h : HWND; Mon : HMONITOR; MonInfo : MONITORINFO; lCapRect : TRect; begin Assert(Assigned(destBitMap)); h := 0; FillMemory(@lCapRect,SizeOf(TRect),0); dc := CreateDC('DISPLAY',nil,nil,nil); try case aCaptureContext of ccActiveWindow: begin h := GetForegroundWindow; GetWindowRect(h,lCapRect); end; ccDesktopMonitor: begin // This gets only the first/primary monitor lCapRect.Right := GetDeviceCaps (DC, HORZRES); lCapRect.Bottom := GetDeviceCaps (DC, VERTRES); end; ccActiveMonitor: begin h := GetForegroundWindow; Mon := MonitorFromWindow(h,MONITOR_DEFAULTTONEAREST); MonInfo.cbSize := SizeOf(MonInfo); GetMonitorInfo(Mon,@MonInfo); lCapRect := MonInfo.rcMonitor; end; ccSpecificMonitor: begin if (MonitorCount < aMonitorNum) or (aMonitorNum < 1) then raise EMonitorCaptureException.CreateFmt('Monitor Index out of Bounds [%d]',[aMonitorNum]); MonInfo := GetMonInfoByIdx(aMonitorNum); lCapRect := MonInfo.rcMonitor; end; ccAllMonitors: begin lCapRect.Right := GetSystemMetrics(SM_CXVIRTUALSCREEN); lCapRect.Bottom := GetSystemMetrics(SM_CYVIRTUALSCREEN); end; end; CaptureDeviceContext(dc,lCapRect,destBitmap); finally ReleaseDC(h, DC) ; end; end;
procedure CaptureDeviceContext(SrcDC: HDC;aCaptureRect : TRect;destBitMap : TBitmap); begin destBitmap.Width := aCaptureRect.Right - aCaptureRect.Left; destBitmap.Height := aCaptureRect.Bottom - aCaptureRect.Top; BitBlt(destBitmap.Canvas.Handle, 0, 0, destBitmap.Width, destBitmap.Height, SrcDC, aCaptureRect.Left, aCaptureRect.Top, SRCCOPY) ; end;
procedure CaptureRect(aCaptureRect : TRect;destBitMap : TBitmap); inline; var dc : HDC; begin dc := CreateDC('DISPLAY',nil,nil,nil); try CaptureDeviceContext(dc,aCaptureRect,destBitMap); finally ReleaseDC(0,dc); end; end; end.
Вот должно помочь!
-
> Света (15.03.10 12:28) [29] > Поче6муто не крепится , завтра привреплю > Света (08.04.10 11:15) [30] > uses > Windows, SysUtils, Graphics, MultiMon;
А вот и "завтра" наступило :)
-
"С пробужденьицем !" ))
-
Думал спостят mirror driver или какойнить fastBmpCompare/DifCutter, а оно все тоже только больше букаф
-
Да вот за границу с мужем ездили , вобшем у меня сорцы гднто на почте остались попробую найти среди спама , а на компе ничо не сохр . hddkill Славик решил испытать !
-
Славик это кто?
-
муж?
-
Славик - это заслуженный муж-испытатель заграниц
-
> Сергей М. (15.04.2010 12:54:37) [37]
Главный вредитель, заслуженый.
-
Он у меня вооще вредитель самый главный - я его люблю таким какой он есть .
|