Advertisement
AZJIO

конвертирует под экран

Sep 18th, 2011
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.50 KB | None | 0 0
  1. #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
  2. #include <ScreenCapture.au3>
  3.  
  4. ; Opt('MustDeclareVars', 1)
  5. ; $Path=@ScriptDir & "\широкий.jpg"
  6. ; $Path=@ScriptDir & "\высокий.jpg"
  7. ; $Path=@ScriptDir & "\Fender_1920x1620.jpg"
  8. $Path=@ScriptDir & "\0001.jpg"
  9.  
  10. _Main($Path, @DesktopWidth, @DesktopHeight)
  11.  
  12. Func _Main($Path, $DW, $DH)
  13.     Local $hBitmap1, $hBitmap2, $hImage1, $hImage2, $hGraphic, $width, $height
  14.     ; $DW+=100
  15.     ; $DH+=100
  16.     _GDIPlus_Startup()
  17.  
  18.     $hImage2=_GDIPlus_ImageLoadFromFile($Path)
  19.     ; If @error Then MsgBox(0, 'Ошибка', @error)
  20.  
  21.     ; Capture screen region
  22.     $hBitmap2 = _ScreenCapture_Capture()
  23.     $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap2)
  24.     ; $hImage1=_GDIPlus_BitmapCloneArea($hImage2, 0, 0, $DW, $DH) ; клон с величиной по размеру экрана
  25.    
  26.     ; на один пиксел большего размера возвращает _ScreenCapture_Capture
  27.     ; $wP = _GDIPlus_ImageGetWidth($hImage1)
  28.     ; $hP = _GDIPlus_ImageGetHeight($hImage1)
  29.     ; MsgBox(0, 'Message', $wP &@CRLF& $hP)
  30.    
  31.  
  32.     ; вычисляем коэффициент трансформации
  33.     $wP = _GDIPlus_ImageGetWidth($hImage2)
  34.     $hP = _GDIPlus_ImageGetHeight($hImage2)
  35.    
  36.     If $wP/$DW<$hP/$DH Then
  37.         $k=$DW/$wP
  38.     ; MsgBox(0, '1', 'коэффициент=' &@CRLF& $k)
  39.     Else
  40.         $k=$DH/$hP
  41.     ; MsgBox(0, '2', 'коэффициент=' &@CRLF& $k)
  42.     EndIf
  43.     If $k<1 Then
  44.         $x1=($DW-$wP)/2
  45.         $y1=($DH-$hP)/2
  46.     Else
  47.         $x1=0
  48.         $y1=0
  49.     EndIf
  50.     ; дескриптор / сдвиг1 / сдвиг2 / ширина / высота
  51.     ; $hImage2=_GDIPlus_BitmapCloneArea($hImage1, 0, 0, $DW, $DH)
  52.    
  53.     ; Draw one image in another
  54.     $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
  55.    
  56.     ; поворот матрицы
  57.     $hMatrix = _GDIPlus_MatrixCreate()
  58.     ; _GDIPlus_MatrixRotate($hMatrix, 45) ; поворот
  59.    
  60.    
  61.     ; трансформация
  62.     ; $k=0.4
  63.     ; $k=Round($k, 4)
  64.     _GDIPlus_MatrixScale($hMatrix, $k, $k)
  65.     _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix)
  66.  
  67.     _GDIPlus_GraphicsDrawImage($hGraphic, $hImage2, $x1, $y1)
  68.    
  69.     ; Сохранение результата
  70.     _GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & "\Fender_New.jpg")
  71.  
  72.     ; Очистить ресурсы
  73.     _GDIPlus_MatrixDispose($hMatrix)
  74.     _GDIPlus_ImageDispose($hImage1)
  75.     _GDIPlus_ImageDispose($hImage2)
  76.     _WinAPI_DeleteObject($hBitmap1)
  77.     _WinAPI_DeleteObject($hBitmap2)
  78.     _GDIPlus_Shutdown()
  79.  
  80. EndFunc   ;==>_Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement