herrDeng網內搜尋

自訂搜尋

Ads

2017年12月20日 星期三

ex12 製作浮水印Watermark或隱藏圖(Steganography)

30 則留言:

B10533015陳建志 提到...

RGB operator+(RGB p1,RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}
void image_blend(Bitmap^im0,Bitmap^im1,double alpha,double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for(int x=0;xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R, pp.G, pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("ROGOOD.png");
cout << "RO圖檔產生\n";
}

B10533006 劉純賓 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533007 魏辰熾 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533008張士晟 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533009 張仲威 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533011 江道逸 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533018 陳郁傑 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; x<W0 ; x++)
for (int y = 0 ; y < H0 ; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10433065劉勝威 提到...

//RGB + 的方法
RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
//RGB * 的方法
RGB operator*(double a , RGB p) {
int r = Clamp((int)(p.R * a), 0, 255);
int g = Clamp((int)(p.G * a), 0, 255);
int b = Clamp((int)(p.B * a), 0, 255);
return RGB(r, g, b);
}
//浮水印方法
void image_blend(Bitmap^ im0, Bitmap^ im1, double alpha, double beta) {
//宣告H0,H1,W0,W1 來得到兩張圖的長 跟 寬
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
// 判斷如果兩張圖大小不一樣就跳出程式
if (H0 != H1 || W0 != W1) {
cout << "兩圖大小不合。\n";
return;
}
//宣告物件Bitmap im2 來存浮水印的結果 成為另一張圖 blend.png
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
//兩層迴圈來得到 第一張圖 跟第二張圖(要成為浮水印的圖) 的每個Pixel
for (int x = 0; x < W0; x++) {
for (int y = 0; y < H0; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
//浮水印公式 (a*im0)+(b*im1)
// alpha,beta 色彩彩度
RGB pp = (alpha*p0) + (beta*p1);
//公式算好後 存在一個新宣告物件的顏色 pixel2
//pp.R pp.G pp.B 是 浮水應公式計算後的顏色
Color pixel2 = Color::FromArgb(pp.R, pp.G, pp.B);
//再來設定im2每個點(x,y)的顏色(pixel2)
im2.SetPixel(x, y, pixel2);
}
}
//迴圈計算好後另存一個圖檔
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533010蕭凱維 提到...

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255),
clamp(p1.G + p2.G, 0, 255),
clamp(p1.B + p2.B, 0, 255));
}

RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255),
clamp(p.G*a, 0, 255),
clamp(p.B*a, 0, 255));
}

void blend(Bitmap^ im0, Bitmap^ im1, double a, double b) {
int H0 = im0->Height, WO = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || WO != W1) { cout << "大小不合\n"; return; }
Bitmap im2(WO, H0);
for (int x = 0; x < WO; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}

B10333093徐子軒 提到...

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255),
clamp(p1.G + p2.G, 0, 255),
clamp(p1.B + p2.B, 0, 255));
}

RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255),
clamp(p.G*a, 0, 255),
clamp(p.B*a, 0, 255));
}

void blend(Bitmap^ im0, Bitmap^ im1, double a, double b) {
int H0 = im0->Height, WO = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || WO != W1) { cout << "大小不合\n"; return; }
Bitmap im2(WO, H0);
for (int x = 0; x < WO; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}

B10533062 洪尚郁 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}

RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^ im0, Bitmap^ im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for(int x= 0 ; x < W0 ; x++)
for (int y=0 ; y < H0; y++) {
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R, pp.G, pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10433090 蔡語鋐 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433073 何明宗 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433072 廖翊翔 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433081 巫明芬 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433091 苗怡婷 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433099 駱婉婷 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433094 簡筱芸 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433107 袁婕寧 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10433102 楊婷妤 提到...

#include <iostream>
#include <cstdlib>
using namespace std;
#using <System.Drawing.dll>
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10533132許敏茹 提到...

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R,0, 255),
clamp(p1,G +p2.G,0, 255),
clamp(p1,B +p2.B,0, 255)),
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a,0,255),
clamp(p.G*a,0,255),.
clamp(p.B*a,0,255),
}
void blend(Bitmap^ im0, Bitmap^ im1, doublea, double b) {
int H0= im0->Height,W0 =im0->width;
int H1= im1->Height,W1 =im1->width;
if (H0 ! H1 ||=w1) { cout<< "大小不合\n"; return ; }
Bitmap im2(w0,H0);
for (int x=0; x<w0; x++)

b10433071 雷昕翰 提到...

//RGB + 的方法
RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
//RGB * 的方法
RGB operator*(double a , RGB p) {
int r = Clamp((int)(p.R * a), 0, 255);
int g = Clamp((int)(p.G * a), 0, 255);
int b = Clamp((int)(p.B * a), 0, 255);
return RGB(r, g, b);
}
//浮水印方法
void image_blend(Bitmap^ im0, Bitmap^ im1, double alpha, double beta) {
//宣告H0,H1,W0,W1 來得到兩張圖的長 跟 寬
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
// 判斷如果兩張圖大小不一樣就跳出程式
if (H0 != H1 || W0 != W1) {
cout << "兩圖大小不合。\n";
return;
}
//宣告物件Bitmap im2 來存浮水印的結果 成為另一張圖 blend.png
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
//兩層迴圈來得到 第一張圖 跟第二張圖(要成為浮水印的圖) 的每個Pixel
for (int x = 0; x < W0; x++) {
for (int y = 0; y < H0; y++)
{
Color p0 = im0->GetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
//浮水印公式 (a*im0)+(b*im1)
// alpha,beta 色彩彩度
RGB pp = (alpha*p0) + (beta*p1);
//公式算好後 存在一個新宣告物件的顏色 pixel2
//pp.R pp.G pp.B 是 浮水應公式計算後的顏色
Color pixel2 = Color::FromArgb(pp.R, pp.G, pp.B);
//再來設定im2每個點(x,y)的顏色(pixel2)
im2.SetPixel(x, y, pixel2);
}
}
//迴圈計算好後另存一個圖檔
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10537208楊蕊筑 提到...

#include
#include
using namespace std;
#using
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10533088葉俊江 提到...

#include
#include
using namespace std;
#using
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10533083徐士興 提到...

#include
#include
using namespace std;
#using
using namespace System::Drawing;

struct RGB {
int R, G, B;
RGB() {}
RGB(int R, int G, int B) :R(R), G(G), B(B) {}
RGB(Color p) {
R = p.R; G = p.G; B = p.B;

}
};
int clamp(int X, int L, int U) {
if (X < L)return L;
else if (X > U)return U;
else return X;
}

RGB operator+(RGB p1, RGB p2) {
return RGB(clamp(p1.R + p2.R, 0, 255), clamp(p1.G + p2.G, 0, 255), clamp(p1.B + p2.B, 0, 255));
}
RGB operator*(double a, RGB p) {
return RGB(clamp(p.R*a, 0, 255), clamp(p.G*a, 0, 255), clamp(p.B*a, 0, 255));
}

void blend (Bitmap^im0, Bitmap^im1,double a, double b){
int H0 = im0->Height, W0 = im0->Width;
int H1 = im1->Height, W1 = im1->Width;
if (H0 != H1 || W0 != W1) { cout << "大小不合\n"; return; }
Bitmap im2(W0, H0);
for (int x = 0; x < W0; x++)
for (int y = 0; y < H0; y++) {
RGB p0(im0->GetPixel(x, y));
RGB p1(im1->GetPixel(x, y));
RGB p2 = (a*p0) + (b*p1);
Color pixel2 = Color::FromArgb(p2.R, p2.G, p2.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖好了。\n";
}
int main()
{
Bitmap^im0 = gcnew Bitmap("rabbit.jpg");
Bitmap^im1 = gcnew Bitmap("8.jpg");
double a = 0.9, b = 0.1;
blend(im0, im1, a, b);
cout << "浮水印\n";
system("Pause");
return 0;
}

B10533071徐琮淇 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533093許永炎 提到...

RGB operator+(RGB p1,RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}
void image_blend(Bitmap^im0,Bitmap^im1,double alpha,double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for(int x=0;xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R, pp.G, pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("ROGOOD.png");
cout << "RO圖檔產生\n";
}

b10533073黃叡哲 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

B10533076姜國傑 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

b10533085羅偉辰 提到...

RGB operator+(RGB p1, RGB p2) {
int r = Clamp(p1.R + p2.R, 0, 255);
int g = Clamp(p1.G + p2.G, 0, 255);
int b = Clamp(p1.B + p2.B, 0, 255);
return RGB(r, g, b);
}
RGB operator*(double alpha, RGB p) {
int r = Clamp((int)(p.R*alpha), 0, 255);
int g = Clamp((int)(p.G*alpha), 0, 255);
int b = Clamp((int)(p.B*alpha), 0, 255);
return RGB(r, g, b);
}

void image_blend(Bitmap^im0, Bitmap^im1, double alpha, double beta) {
int W0 = im0->Width, H0 = im0->Height;
int W1 = im1->Width, H1 = im1->Height;
if (W1 != W0 || H1 != H0) {
cout << "圖大小不合。\n";
return;
}
Bitmap im2(W0, H0);
Color Black = Color::FromArgb(0, 0, 0);
for (int x=0 ; xGetPixel(x, y);
Color p1 = im1->GetPixel(x, y);
RGB pp = (alpha*RGB(p0)) + (beta*RGB(p1));
Color pixel2 = Color::FromArgb(pp.R,pp.G,pp.B);
im2.SetPixel(x, y, pixel2);
}
im2.Save("blend.png");
cout << "blend.png圖檔產生\n";
}

Related Posts Plugin for WordPress, Blogger...

熱門文章