博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) 如何使用C++/CLI读/写jpg檔? (.NET) (C++/CLI) (GDI+) (C/C++) (Image Processing)
阅读量:6248 次
发布时间:2019-06-22

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

Abstract

因为Computer Vision的作业,之前都是用C# + GDI+写,但这次的作业要做Grayscale Dilation,想用STL的Generic Algorithm写,但C++ Standard Library并无法读取jpg档,用其它Library又比较麻烦,所以又回头想到GDI+,能同时使用STL和GDI+的,也只有C++/CLI了,我想这也是C++/CLI的优势之一,可以让你同时发挥.NET Framework和STL的power,以下的范例demo如何使用C++/CLI配合GDI+将jpg档读进来,并写入jpg檔。

Introduction

此范例比须手动加上Reference System.Drawing.dll

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : ReadJpg.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0
 6InBlock.gifDescription : Demo how to read/write jpg by GDI+
 7InBlock.gifRelease     : 11/19/2006
 8ExpandedBlockEnd.gif*/
 9
None.gif
10
None.gif#include 
"
stdafx.h
"
11
None.gif
12
None.gif
using
 
namespace
 System::Drawing;
13
None.gif
using
 
namespace
 System::Drawing::Imaging;
14
None.gif
15
ExpandedBlockStart.gifContractedBlock.gif
int
 main() 
dot.gif
{
16InBlock.gif  Bitmap ^originalImage = gcnew Bitmap("lena.jpg");
17InBlock.gif  Bitmap ^newImage = gcnew Bitmap(originalImage->Width, originalImage->Height);
18InBlock.gif
19ExpandedSubBlockStart.gifContractedSubBlock.gif  for(int x = 0; x!= originalImage->Width;++x) dot.gif{
20ExpandedSubBlockStart.gifContractedSubBlock.gif    for(int y = 0; y != originalImage->Height; ++y) dot.gif{
21InBlock.gif      int r = originalImage->GetPixel(x,y).R;
22InBlock.gif      int g = originalImage->GetPixel(x,y).G;
23InBlock.gif      int b = originalImage->GetPixel(x,y).B;
24InBlock.gif
25InBlock.gif      newImage->SetPixel(x,y, Color::FromArgb(r, g, b));
26ExpandedSubBlockEnd.gif    }
27ExpandedSubBlockEnd.gif  }
28InBlock.gif
29InBlock.gif  newImage->Save("newlena.jpg");
30InBlock.gif
31InBlock.gif  return 0;
32ExpandedBlockEnd.gif}
See Also

转载地址:http://rvria.baihongyu.com/

你可能感兴趣的文章
Greenplum 激活standby master失败后的异常修复
查看>>
nanomsg实验——survey
查看>>
Java设计模式(八)----代理模式
查看>>
LinkedList的用法小结
查看>>
Using mongoDB's Profiler analyze the performance of database operations
查看>>
python range() function like postgresql generate_series()
查看>>
一则优化案例
查看>>
[实践]Sonar Xcode8兼容
查看>>
Canvas应用
查看>>
node inspect chrome日志调试
查看>>
书写可维护代码的重要性
查看>>
数据库实时转移之Confluent环境搭建(二)
查看>>
(一)检测浏览器是否支持websocket
查看>>
读书笔记02-《术与道》上
查看>>
微信小程序知识点
查看>>
那些你可能不知道的搜索奇技淫巧
查看>>
译 如何做好产品经理面试工作
查看>>
[译] 伟大设计与好设计之间区别是什么?这里告诉你真相
查看>>
Webpack 使用小结
查看>>
Vue 进阶
查看>>