- Код: Выделить всё
Dim i As Image
Set i = CreateBitmap(120, 90, PixelFormat24bppRGB)
With CreateGraphicsFromImage(i)
.Clear ARGB(&HC0C0C0)
.DrawImage CreateImage("test.jpg"), 0, 9, 120, 72
End With
В i получаешь результат.
Dim i As Image
Set i = CreateBitmap(120, 90, PixelFormat24bppRGB)
With CreateGraphicsFromImage(i)
.Clear ARGB(&HC0C0C0)
.DrawImage CreateImage("test.jpg"), 0, 9, 120, 72
End With
Ммм... А надо?alibek писал(а):tyomitch, а не прикрутить ли тебе к обертке референсный модуль? Чтобы можно было узнать размеры, цветность и т.п. из заголовков?
Roman Koff писал(а):Вот что у меня вышло для создания превьюшки. Но в этом случае картинка подгружается дважды. Как оптимизировать?
- Код: Выделить всё
Const resX As Long = 120
Const resY As Long = 90
Dim imgBUF As prjGDIplus.Image
Dim srcX As Long
Dim srcY As Long
Dim newX As Long
Dim newY As Long
Dim dXY As Single
Sub Make_Thumb(pDir As String, pFileSource As String)
Set imgBUF = CreateBitmapFromPicture(LoadPicture(pDir & pFileSource))
srcX = imgBUF.Width
srcY = imgBUF.Height
If srcX > srcY Then
dXY = srcX / srcY
newX = resX
newY = resX / dXY
Else
dXY = srcY / srcX
newY = resY
newX = resY / dXY
End If
Set imgBUF = CreateBitmap(resX, resY, PixelFormat24bppRGB)
With CreateGraphicsFromImage(imgBUF)
.Clear ARGB(&HC0C0C0)
.DrawImage CreateImage(pDir & pFileSource), Int((resX - newX) / 2), Int((resY - newY) / 2), newX, newY
End With
imgBUF.SaveToJpeg pDir & "_" & pFileSource, 80
Set imgBUF = Nothing
End Sub
Const resX As Long = 120
Const resY As Long = 90
Dim imgBUF As prjGDIplus.Image, imgORG As prjGDIplus.Image
Dim srcX As Long
Dim srcY As Long
Dim newX As Long
Dim newY As Long
Dim dXY As Single
Sub Make_Thumb(pDir As String, pFileSource As String)
Set imgORG = CreateImage(pDir & pFileSource)
srcX = imgORG.Width
srcY = imgORG.Height
If srcX > srcY Then
dXY = srcX / srcY
newX = resX
newY = resX / dXY
Else
dXY = srcY / srcX
newY = resY
newX = resY / dXY
End If
Set imgBUF = CreateBitmap(resX, resY, PixelFormat24bppRGB)
With CreateGraphicsFromImage(imgBUF)
.Clear ARGB(&HC0C0C0)
.DrawImage imgORG, Int((resX - newX) / 2), Int((resY - newY) / 2), newX, newY
End With
imgBUF.SaveToJpeg pDir & "_" & pFileSource, 80
End Sub
alibek писал(а):Во-первых, StdPicture (LoadPicture()) уже содержит свойства .Width, .Height.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 89