Hi,
ich habe schon seit längerem ein Skript bei dem in ein Bild ein Text ergänzt wird.
Nun habe bemerkt, dass es nicht mehr funktioniert.
Oder ich steh grad aufm Schlauch und überseh was
Leider ist der Text nicht sichtbar.
Ich habe Win 10 1909 64bit
AutoIt
#Region ;************ Includes ************
#Include <GDIPlus.au3>
#Include <File.au3>
#EndRegion ;************ Includes ************
_bild_text("C:\Windows\Web\Wallpaper\Windows\img0.jpg", 500, 500, "Hallo", 50)
Func _bild_text($bild_quelldatei_func, $text_pos_x_func, $text_pos_y_func, $text, $text_schriftgroesse_func)
Local $aInfo, $desktopbild_zieldatei, $hBrush, $hBrush2, $hDestination, $hFamily, $hFont, $hFormat, $zielbild_tmp, $zielbild_io
Local $hGraphic, $hGraphic1, $hGraphics, $hSource1, $hGui_bild_text, $himg, $iX, $iX1, $iY1, $iy, $tLayout, $text_breite, $text_hoehe
Local $szDrive, $szDir, $szFName, $szExt
_GDIPlus_Startup()
;kompletter Pfad Zielbild
_PathSplit($bild_quelldatei_func, $szDrive, $szDir, $szFName, $szExt)
$desktopbild_zieldatei = $szFName & "2" & $szExt
$zielbild_io = @TempDir & "\" & $desktopbild_zieldatei
;kompletter Pfad Tempbild (Originalbild auf Desktop vergrößert)
$zielbild_tmp = @TempDir & $szFName & " temp" & $szExt
FileDelete($zielbild_io)
FileDelete($zielbild_tmp)
$hSource1 = _GDIPlus_ImageLoadFromFile($bild_quelldatei_func)
$iX1 = _GDIPlus_ImageGetWidth($hSource1)
$iY1 = _GDIPlus_ImageGetHeight($hSource1)
$hGui_bild_text = GUICreate("GDI+", $iX1, $iY1)
GUISetState(@SW_HIDE)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui_bild_text)
;Zeichnet das Bild auf Desktopgroesse
$hDestination = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hGraphic)
$hGraphic1 = _GDIPlus_ImageGetGraphicsContext($hDestination)
_GDIPlus_GraphicsDrawImageRect($hGraphic1, $hSource1, 0, 0, @DesktopWidth, @DesktopHeight)
;Speichert das Bild
_GDIPlus_ImageSaveToFile($hDestination, $zielbild_tmp)
;Ressourcen freigeben
_GDIPlus_ImageDispose($hSource1)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_BitmapDispose($hDestination)
_GDIPlus_GraphicsDispose($hGraphic1)
$himg = _GDIPlus_ImageLoadFromFile($zielbild_tmp)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($himg)
;Abmaße ermitteln
$iX = _GDIPlus_ImageGetWidth($himg)
$iy = _GDIPlus_ImageGetHeight($himg)
$text_pos_x_func += $iX
$text_pos_y_func += $iy
;Schrift erstellen
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, $text_schriftgroesse_func, 1)
$tLayout = _GDIPlus_RectFCreate($text_pos_x_func, $text_pos_y_func)
;Ermittelt die Abmaße des Textes
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphics, $text, $hFont, $tLayout, $hFormat)
$text_breite = Ceiling(DllStructGetData($aInfo[0], "Width"))
$text_hoehe = Ceiling(DllStructGetData($aInfo[0], "Height"))
;Zeichnet ein weißes Feld hinter den Text
$hBrush2 = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
_GDIPlus_GraphicsFillRect($hGraphics, $text_pos_x_func, $text_pos_y_func, $text_breite, $text_hoehe, $hBrush2)
;Zeichnet den Text
$hBrush = _GDIPlus_BrushCreateSolid()
_GDIPlus_GraphicsDrawStringEx($hGraphics, $text, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImage($hGraphics, $himg, $iX, $iy)
;Speichert die Datei
_GDIPlus_ImageSaveToFile($himg, $zielbild_io)
;Ressourcen freigeben
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_ImageDispose($himg)
_GDIPlus_Shutdown()
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_Shutdown()
FileDelete($zielbild_tmp)
ShellExecute($zielbild_io)
Return $zielbild_io
EndFunc ;==>_bild_mit_text
Alles anzeigen