網頁

2017年12月20日 星期三

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

30 則留言:

  1. 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";
    }

    回覆刪除
  2. B10533006 劉純賓2017年12月20日 下午3:08

    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";
    }

    回覆刪除
  3. B10533007 魏辰熾2017年12月20日 下午3:09

    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";
    }

    回覆刪除
  4. 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";
    }

    回覆刪除
  5. B10533009 張仲威2017年12月20日 下午3:10

    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";
    }

    回覆刪除
  6. B10533011 江道逸2017年12月20日 下午3:10

    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";
    }

    回覆刪除
  7. B10533018 陳郁傑2017年12月20日 下午3:12

    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";
    }

    回覆刪除
  8. //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";
    }

    回覆刪除
  9. 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";
    }

    回覆刪除
  10. 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";
    }

    回覆刪除
  11. B10533062 洪尚郁2017年12月20日 下午3:46

    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";
    }

    回覆刪除
  12. B10433090 蔡語鋐2017年12月20日 下午3:47

    #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;
    }

    回覆刪除
  13. B10433073 何明宗2017年12月20日 下午3:47

    #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;
    }

    回覆刪除
  14. B10433072 廖翊翔2017年12月20日 下午3:48

    #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;
    }

    回覆刪除
  15. B10433081 巫明芬2017年12月20日 下午3:49

    #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;
    }

    回覆刪除
  16. B10433091 苗怡婷2017年12月20日 下午3:49

    #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;
    }

    回覆刪除
  17. B10433099 駱婉婷2017年12月20日 下午3:50

    #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;
    }

    回覆刪除
  18. B10433094 簡筱芸2017年12月20日 下午3:51

    #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;
    }

    回覆刪除
  19. B10433107 袁婕寧2017年12月20日 下午3:52

    #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;
    }

    回覆刪除
  20. B10433102 楊婷妤2017年12月20日 下午3:53

    #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;
    }

    回覆刪除
  21. 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++)

    回覆刪除
  22. b10433071 雷昕翰2017年12月20日 下午5:30

    //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";
    }

    回覆刪除
  23. #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;
    }

    回覆刪除
  24. #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;
    }

    回覆刪除
  25. #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;
    }

    回覆刪除
  26. 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";
    }

    回覆刪除
  27. 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";
    }

    回覆刪除
  28. b10533073黃叡哲2018年1月3日 下午2:29

    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";
    }

    回覆刪除
  29. B10533076姜國傑2018年1月3日 下午2:29

    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";
    }

    回覆刪除
  30. b10533085羅偉辰2018年1月3日 下午5:56

    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";
    }

    回覆刪除

HTML 編輯器