博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【练习】reserving.kr 之imageprc write up
阅读量:7071 次
发布时间:2019-06-28

本文共 3805 字,大约阅读时间需要 12 分钟。

补充:c++ builder 与 windows  API经典范例

#include 
#pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //用Bitmap简化Image1图文件叙述 Graphics::TBitmap *Bitmap = Image1->Picture->Bitmap; //建立一新暂时设定,以利图文件16位转成8位时的最适化 BITMAPINFO bmi; //将bmi结构所在内存初始化 memset(&bmi, 0, sizeof(BITMAPINFO)); //BITMAPINFO结构包含BITMAPINFOHEADER结构+RGBQUAD结构 //设置BITMAPINFOHEADER结构成员 bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);//结构大小 bmi.bmiHeader.biWidth = Bitmap->Width;//位图宽度 bmi.bmiHeader.biHeight = Bitmap->Height; //位图高度 bmi.bmiHeader.biPlanes = 1;//目的装置平面数,必为1 //转换成 8 位像素 bmi.bmiHeader.biBitCount = 8; // 8位像素 //设置RGBQUAD结构成员 DWORD BitMasks[3]; BitMasks[0] = 0xFFFF;//Blue明亮度 BitMasks[1] = 0xFFFF;//Green明亮度 BitMasks[2] = 0xFFFF;//Red明亮度 //将设好的RGB结构填入到RGBQUAD结构中 memcpy(bmi.bmiColors, BitMasks, sizeof(BitMasks)); unsigned char *bits; //将BITMAPINFO结构创造一个新DIB图文件,并返回handle HBITMAP HBmp = ::CreateDIBSection(0, &bmi, DIB_RGB_COLORS, reinterpret_cast
(&bits), NULL, NULL); if (HBmp) { //建立与指定DC兼容的DC HDC Hdc = ::CreateCompatibleDC(0); //选定新对象,并返回原有对象设置 HBITMAP HOldBmp = ::SelectObject(Hdc, HBmp); try { //先由Image复制图像至暂时设备 ::BitBlt(Hdc, 0, 0, Bitmap->Width, Bitmap->Height, Bitmap->Canvas->Handle, 0, 0, SRCCOPY); //再由暂时设备复制图像至Form1上 ::BitBlt(Canvas->Handle, 10, 10, Bitmap->Width, Bitmap->Height, Hdc, 0, 0, SRCCOPY); } catch (...) { //先恢复原设置,再释放对象 ::DeleteObject(::SelectObject(Hdc, HOldBmp)); //释放DC ::DeleteDC(Hdc); } //先恢复原设置,再释放对象 ::DeleteObject(::SelectObject(Hdc, HOldBmp)); //释放DC ::DeleteDC(Hdc); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //在内存中配置一个新图文件 //在Unit1.h中加入 #include
std::auto_ptr
Bitmap(new Graphics::TBitmap()); //设置长宽 Bitmap->Width = Image1->Picture->Bitmap->Width; Bitmap->Height = Image1->Picture->Bitmap->Height; //设置为8位图文件 Bitmap->PixelFormat = pf8bit; //将Image1复制至此新图文件,并最适化 ::BitBlt(Bitmap->Canvas->Handle, 0, 0, Bitmap->Width, Bitmap->Height, Image1->Canvas->Handle, 0, 0, SRCCOPY); //再将此图文件指派回Image1 Image1->Picture->Bitmap->Assign(Bitmap.get()); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { //释放所有图文件 for(int i=0;i
ClassNameIs("TBitmap")) delete Components[i]; } //---------------------------------------------------------------------------

 

这种代码完全看不懂,先把过程照着wp写下来,之后慢慢 分析吧,首先字符 wrong定位到算法函数:

如图为主函数:

 

用exescope导出dump如图

于是写出脚本,拷贝别人的:

from PIL import Imagewidth = 200height = 150image_file = open('Data_1.bin', 'rb')data = image_file.read()image = Image.frombuffer('RGB', (width, height), data, 'raw', 'RGB')image = image.transpose(Image.FLIP_TOP_BOTTOM)image.show()image_file.close()

于是得到了这张图片

 

 

转载于:https://www.cnblogs.com/liuyimin/p/7635764.html

你可能感兴趣的文章
HDU 5655 CA Loves Stick 水题
查看>>
EventBus (四) Sticky事件
查看>>
linux Shell编程
查看>>
ZeroMQ(java)之I/O线程的实现与组件间的通信
查看>>
javascript获取当前的时间戳
查看>>
【架构】微服务系列文章
查看>>
Eclipse:The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
查看>>
PAT1005
查看>>
深入理解java的抽象类和接口(转载)
查看>>
HTML元素坐标定位,这些知识点得掌握
查看>>
【服务器环境搭建-Centos】jdk的安装
查看>>
mysql主从复制的配置总结
查看>>
three.js正交投影照相机
查看>>
构建自己的PHP框架--构建模版引擎(1)
查看>>
Linux之一次性安装开发工具:yum groupinstall Development tools
查看>>
dos.orm的事务处理
查看>>
Odoo 二次开发教程(五)-新API的介绍与应用
查看>>
VC++ 一个简单的Log类
查看>>
Java内存模型深度解析:重排序 --转
查看>>
CentOS防火墙iptables的配置方法详解
查看>>