:: Visual Foxpro, Foxpro for DOS
Конвертация bmp в png
Rustam
Автор

Сообщений: 235
Откуда: Иркутск
Дата регистрации: 14.10.2000
Здравствуйте!
У меня стоит задача конвертации bmp в png. Если подробно: пользователь каким-то образом в буфер обмена получает картину(например Screenshot) и в форме приложения на VFP нажимает на кнопку Сохранить картину из буфера, и процедура сохраняет картину в файл, только в формате bmp. Мне хочется в png.
Ниже код сохранения картинки из буфера, где-то этот код скачал, не помню где, если увидите, передайте автору кода спасибо!
hBmp = 0
If OpenClipboard(0) != 0
hBmp = GetClipboardData(CF_BITMAP)
hPal = GetClipboardData(CF_PALETTE)
CloseClipboard()
Endif
If hBmp = 0 Or GetObjectType(hBmp) <> OBJ_BITMAP
Messagebox("Буфер не содержит картинку",64,"")
Return -1
Endif
lcPictDesc = BinToC(16, "4RS") + BinToC(PICTYPE_BITMAP, "4RS") + BinToC(hBmp, "4RS") + BinToC(hPal, "4RS")
iid = IID_IDispatch
IPic = 0
OleCreatePictureIndirect(@lcPictDesc, @iid, 1, @IPic)
=SavePicture(IPic,tcfilename)
DeleteObject(hBmp)
Спасибо!



Исправлено 2 раз(а). Последнее : Rustam, 10.12.20 17:08
Ratings: 0 negative/0 positive
Re: Конвертация bmp в png
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Картинка в памяти - это один "формат".
Картинка в формате bmp или png - это другие форматы.



Исправлено 2 раз(а). Последнее : Ydin, 11.12.20 10:26
Ratings: 0 negative/0 positive
Re: Конвертация bmp в png
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Конвертация bmp в png
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Используя Славы Клепинина класс:

*
* Test1.prg
* Демонстрация сохранения исходного изображения в новом графическом формате
*
LOCAL cPath, oGP
cPath = JUSTPATH(SYS(16))
SET DEFAULT TO (cPath)
SET CLASSLIB TO vfpgdiplus
oGP = CREATEOBJECT("GdipImages")
oGP.JPEGQuality = 90
IF oGP.LoadFromFile(GETFILE('BMP|GIF|PHG|TIF|JPG'))
IF oGP.SaveToFile(PUTFILE('Файл','mypicture','png'))
= MESSAGEBOX('ok')
ELSE
= MESSAGEBOX('Ошибка ' + LTRIM(STR(oGP.GetStatus())) + ;
' при сохранении изображения')
ENDIF
ELSE
= MESSAGEBOX('Ошибка ' + LTRIM(STR(oGP.GetStatus())) + ;
' при считывании изображения')
ENDIF


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: Конвертация bmp в png
Rustam
Автор

Сообщений: 235
Откуда: Иркутск
Дата регистрации: 14.10.2000
PaulWist!

Спасибо, большое. Позже сделаю и напишу результат.

Еще раз спасибо, все отлично работает!



Исправлено 2 раз(а). Последнее : Rustam, 12.12.20 16:56
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 34 (Гостей: 34)

© 2000-2024 Fox Club 
Яндекс.Метрика