Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / bmp to base64 / 11 сообщений из 11, страница 1 из 1
30.04.2012, 12:47
    #37777360
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Здравствуйте!
Проблема в следующем.: нужно сделать скриншот экрана и снимок представить в виде строки формата base64 для использования протоколом soap. скрин я делать научился но сохраняется в bmp и весит около 8 Мб. Надо его переконвертировать в jpeg что б меньше весил т.к. картинка будет передаваться через инет..
Помогите пожалуйста!
...
Рейтинг: 0 / 0
30.04.2012, 14:14
    #37777413
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Gena87,

1. При чем тут фокс?
2. При сохранении выбери нужный формат .jpeg
...
Рейтинг: 0 / 0
30.04.2012, 14:44
    #37777435
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
я делаю скрин в фоксе вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
*//Íàæèìàåì Print Screen
#Define VK_SNAPSHOT 44 
#DEFINE KEYEVENTF_KEYUP 2
Declare integer keybd_event IN user32 SHORT bVk, SHORT bScan, INTEGER dwFlags, INTEGER dwExtraInfo 
=keybd_event (VK_SNAPSHOT, 0, 0, 0);
=keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);

#define CF_BITMAP 2
#define CF_PALETTE 9
#define OBJ_BITMAP 7
#define PICTYPE_BITMAP 1
#define IID_IDispatch Chr(0x00)+Chr(0x04)+Chr(0x02)+Chr(0x00)+ ;
Replicate(Chr(0x00), 4)+Chr(0xC0)+Replicate(Chr(0x00), 6)+Chr(0x46)
Declare Long OpenClipboard in Win32API Long hWnd
Declare Long CloseClipboard in Win32API
Declare Long GetClipboardData in Win32API Long
Declare Long DeleteObject in Win32API Long
Declare Long GetObjectType in Win32API Long
Declare Long OleCreatePictureIndirect In oleaut32 String @, String @, Long, Object @
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("&#221;&#242;&#238; &#237;&#229; BMP")
*!*	RETURN
*!*	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, "d:/pict.bmp")
DeleteObject(hBmp)
= MESSAGEBOX("ok")



смысл в том что б сделать скрин когда будет возникать ошибка и он будет отправляться вместе с описанием ошибки на mail.
Если кто знает как сохранить скрин в jpeg подскажите пожалуйста.
...
Рейтинг: 0 / 0
30.04.2012, 15:35
    #37777479
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Gena87,

Посмотри тут , может, подойдет
...
Рейтинг: 0 / 0
30.04.2012, 16:03
    #37777500
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
нет, использовать какое-то приложение в коммерческом продукте очень плохо...
...
Рейтинг: 0 / 0
30.04.2012, 16:07
    #37777502
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Gena87нет, использовать какое-то приложение в коммерческом продукте очень плохо...
Это если на халяву, а если все законно, то почему нет?
...
Рейтинг: 0 / 0
30.04.2012, 16:20
    #37777513
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
просто пихать стороннее приложение да и любое другое в большой проект не красиво...
...
Рейтинг: 0 / 0
30.04.2012, 17:05
    #37777541
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
получилось преобразовать файл в jpg, вместо 8 мегабайт bmp сейчас 250 кб jpg =)
Получилось при помощи библиотеки gdiPlus
Класс для работы с изображениями с побомощью данной библиотеки описан в книге Клепинина VisualFoxPro 9.0 (tckb кому интересно)

сейчас сделано так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
PROCEDURE tmp

LOCAL lcPath, loGP, llReturn
SET CLASSLIB TO vfpgdiplus

#Define VK_SNAPSHOT 44 
#DEFINE KEYEVENTF_KEYUP 2
Declare integer keybd_event IN user32 SHORT bVk, SHORT bScan, INTEGER dwFlags, INTEGER dwExtraInfo 
=keybd_event (VK_SNAPSHOT, 0, 0, 0);
=keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);

loGP = CREATEOBJECT("GdipImages")
*loGP.LoadFromFile(GETFILE('bmp'))
loGP.CopyFromClipboard()
loGP.SaveToFile('d:\gptest2.jpg')
= MESSAGEBOX(IIF(llReturn,'OK','&#206;&#248;&#232;&#225;&#234;&#224; ' + LTRIM(STR(loGP.GetStatus()))))
ENDPROC




Осталось преобразовать данный файл в строку формата base64. помогите пожалуйста.
...
Рейтинг: 0 / 0
30.04.2012, 18:07
    #37777575
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Хелп читать пробовали - StrConv(lcStr, 13 )
...
Рейтинг: 0 / 0
02.05.2012, 10:36
    #37778684
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
да вот видел я ее но в книге про нее так написано что я не понял что она это то что мне надо=)
...
Рейтинг: 0 / 0
02.05.2012, 10:36
    #37778685
Gena87
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bmp to base64
Спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / bmp to base64 / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]