ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

20.08.2008, 14:43
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
2 procedure
Советую Dev cpp http://www.bloodshed.net/download.html
(за помощь плюсы,плюсы,плюсы...)
|
|
|

22.08.2008, 10:39
|
|
Новичок
Регистрация: 16.08.2008
Сообщений: 19
Провел на форуме: 33376
Репутация:
3
|
|
Доброго времени суток.
Подскажите пожалуйста как сделать скриншот экрана(игры) и записать его в JPG.
Стандартный PrintScreen делает это некорректно. Получаю образ экрана, могу его записать в BMP, но получаю слишком большой размер файла.
|
|
|

22.08.2008, 11:05
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
SnagIT
|
|
|

24.08.2008, 18:22
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
Сообщение от BEGINER
Доброго времени суток.
Подскажите пожалуйста как сделать скриншот экрана(игры) и записать его в JPG.
Стандартный PrintScreen делает это некорректно. Получаю образ экрана, могу его записать в BMP, но получаю слишком большой размер файла.
1. ошибся разделом
2. mspaint -> ctrl+v -> save as (*.jpeg)
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

24.08.2008, 19:51
|
|
Новичок
Регистрация: 16.08.2008
Сообщений: 19
Провел на форуме: 33376
Репутация:
3
|
|
Сообщение от W!z@rD
1. ошибся разделом
2. mspaint -> ctrl+v -> save as (*.jpeg)
1 прога пишется на Си(блокируется поверхность и по пикселю записывается в файл)
2 mspaint не делает сглаживания, а Photoshop‘а нет
|
|
|

25.08.2008, 06:49
|
|
Участник форума
Регистрация: 01.05.2006
Сообщений: 216
Провел на форуме: 287212
Репутация:
62
|
|
BEGINER, т.е. ты хочешь, чтобы твоя прога делала сглаживание? Прикрути бикубический алгоритм тогда.
|
|
|

25.08.2008, 16:18
|
|
Новичок
Регистрация: 16.08.2008
Сообщений: 19
Провел на форуме: 33376
Репутация:
3
|
|
Сообщение от ForNeVeR
BEGINER, т.е. ты хочешь, чтобы твоя прога делала сглаживание? Прикрути бикубический алгоритм тогда.
Да, но это не главное, мне нужно сохранить образ экрана в JPG файл. Сейчас скидываю экран размером 800х600 в файл, получаю 960Кб. Это много!
|
|
|

25.08.2008, 17:54
|
|
Познающий
Регистрация: 29.01.2008
Сообщений: 82
Провел на форуме: 373690
Репутация:
88
|
|
BEGINER, вот код (проверял в VC++2008). Сохраняет в JPG + можно устанавливать степень сжатия.
Код:
#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>
#pragma comment (lib, "gdiplus.lib")
using namespace Gdiplus;
int GetEncoderClsid(WCHAR *format, CLSID *pClsid)
{
unsigned int num = 0, size = 0;
GetImageEncodersSize(&num, &size);
if(size == 0) return -1;
ImageCodecInfo *pImageCodecInfo = (ImageCodecInfo *)(malloc(size));
if(pImageCodecInfo == NULL) return -1;
GetImageEncoders(num, size, pImageCodecInfo);
for(unsigned int j = 0; j < num; ++j){
if(wcscmp(pImageCodecInfo[j].MimeType, format) == 0){
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j;
}
}
free(pImageCodecInfo);
return -1;
}
int GetScreeny(LPWSTR lpszFilename, ULONG uQuality) // by Napalm
{
ULONG_PTR gdiplusToken;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
HDC hdcScreen = CreateDC(L"DISPLAY", NULL, NULL, NULL);
HDC hdcCapture = CreateCompatibleDC(hdcScreen);
int nWidth = GetDeviceCaps(hdcScreen, HORZRES),
nHeight = GetDeviceCaps(hdcScreen, VERTRES),
nBPP = GetDeviceCaps(hdcScreen, BITSPIXEL);
LPBYTE lpCapture;
BITMAPINFO bmiCapture = { {
sizeof(BITMAPINFOHEADER), nWidth, -nHeight, 1, nBPP, BI_RGB, 0, 0, 0, 0, 0,
} };
HBITMAP hbmCapture = CreateDIBSection(hdcScreen, &bmiCapture,
DIB_PAL_COLORS, (LPVOID *)&lpCapture, NULL, 0);
if(!hbmCapture){
DeleteDC(hdcCapture);
DeleteDC(hdcScreen);
GdiplusShutdown(gdiplusToken);
return 1;
}
int nCapture = SaveDC(hdcCapture);
SelectObject(hdcCapture, hbmCapture);
BitBlt(hdcCapture, 0, 0, nWidth, nHeight, hdcScreen, 0, 0, SRCCOPY);
RestoreDC(hdcCapture, nCapture);
DeleteDC(hdcCapture);
DeleteDC(hdcScreen);
CLSID imageCLSID;
Bitmap *pScreenShot = new Bitmap(hbmCapture, (HPALETTE)NULL);
EncoderParameters encoderParams;
encoderParams.Count = 1;
encoderParams.Parameter[0].NumberOfValues = 1;
encoderParams.Parameter[0].Guid = EncoderQuality;
encoderParams.Parameter[0].Type = EncoderParameterValueTypeLong;
encoderParams.Parameter[0].Value = &uQuality;
GetEncoderClsid(L"image/jpeg", &imageCLSID);
int result = (pScreenShot->Save(lpszFilename, &imageCLSID, &encoderParams) == Ok);
delete pScreenShot;
DeleteObject(hbmCapture);
GdiplusShutdown(gdiplusToken);
return result;
}
int main()
{
return GetScreeny(L"screeny.jpg", 75); //75-степень сжатия скрина
}
Последний раз редактировалось Smapt; 25.08.2008 в 20:02..
|
|
|

25.08.2008, 20:10
|
|
Новичок
Регистрация: 16.08.2008
Сообщений: 19
Провел на форуме: 33376
Репутация:
3
|
|
Smapt большое спасибо, то что нужно. Вставил в VC6, получил кучу ошибок, добавил SDK их стало меньше, остались такие:
Код:
f:\program files\microsoft sdks\windows\v6.1\include\winnt.h(3607) : warning C4035: 'ReadPMC' : no return value
f:\program files\microsoft sdks\windows\v6.1\include\winnt.h(3637) : warning C4035: 'ReadTimeStampCounter' : no return value
f:\program files\microsoft sdks\windows\v6.1\include\wingdi.h(4340) : warning C4068: unknown pragma
f:\program files\microsoft sdks\windows\v6.1\include\wingdi.h(4341) : warning C4068: unknown pragma
f:\program files\microsoft sdks\windows\v6.1\include\bcrypt.h(112) : error C2485: 'align' : unrecognized extended attribute
f:\program files\microsoft sdks\windows\v6.1\include\bcrypt.h(112) : error C2059: syntax error : '('
f:\program files\microsoft sdks\windows\v6.1\include\bcrypt.h(118) : error C2485: 'align' : unrecognized extended attribute
f:\program files\microsoft sdks\windows\v6.1\include\bcrypt.h(118) : error C2059: syntax error : '('
F:\project\gdirest\gdirest.cpp(44) : error C2664: 'CreateDCA' : cannot convert parameter 1 from 'unsigned short [8]' to 'const char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
gdirest.exe - 5 error(s), 4 warning(s)
Как можно их исправить?
|
|
|

25.08.2008, 20:23
|
|
Познающий
Регистрация: 29.01.2008
Сообщений: 82
Провел на форуме: 373690
Репутация:
88
|
|
Первые 4 варнинга и ошибки у тебя как раз в СДК который ты добавил, так-что разбирайся с ним. А вообще поставь Vc9, я думаю проблемы пропадут.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|