여러 개의 파워포인트 파일을 하나로 합치는 프로그램 입니다확장자가 ppt 이거나 pptx 관련 없이 작업이 가능 하고 합치는 파일의 순서도 설정이 가능 합니다.


powerpoint file add


 

먼저 파일을 다운로드 합니다구글 코드에서 다운로드 하면 됩니다.

https://code.google.com/archive/p/powerpointjoin/downloads


powerpoint file add


리스트의 마지막 pptjoin-0.2.zip 파일을 클릭해서 다운로드 받습니다.


powerpoint file add


다운받은 파일을 압축을 풀면 다음과 같은 파일들이 보입니다.


powerpoint file add


여기에서 pptjoin.hta 파일이 실행 파일 입니다.

 

하나로 합칠 파워포인트 파일들을 하나의 폴더에 넣고 연결 순서를 결정하기 위한 텍스트 파일을 하나 생성 해서 파워포인트를 모아놓은 폴더에 같이 저장 합니다.


powerpoint file add


이렇게 기록을 하면 됩니다.


powerpoint file add


이제 작업 전 폴더 내 파일들이 이런 식으로 준비가 되었습니다.

 

압축 해제한 프로그램 폴더에서 pptjoin.hta 파일을 더블 클릭해 실행합니다.


powerpoint file add


1번에서 [찾아보기] 버튼을 이용하여 문서를 합치는 순서를 기록한 파일을 선택해 줍니다.

 

그리고 2. Click here 에서 파란색 here를 클릭하여주면 파일이 하나로 생성이 됩니다.


powerpoint file add


3번이 보인다면 작업이 완료가 된 것 입니다. 파워포인트를 모아놓은 폴더를 볼까요?


powerpoint file add


자동으로 combined.ppt라는 이름으로 모든 파일을 하나로 하여 생성이 되었습니다이렇게 간단하게 파일들이 하나로 통합 됩니다.


- copy coding -


4. 이미지 연산

 

4.1 이미지 더하기


4.1.1 modulo 연산


img = img1 + img2

두개의 이미지를 각각의 픽셀 단위로 덧셈을 하여 255보다 큰 경우 256으로 나눈 나머지를 픽셀 값으로 설정 합니다. ( 250 + 7 = 257/256 -> 1)

더하는 이미지는 사이즈가 동일해야 하며 사이즈가 같지 않으면 아래와 같은 오류가 발생 합니다.


 ValueError: operands could not be broadcast together with shapes (277,350,3) (213,350,3) 


4.1.2 Saturation 연산


cv2.add() 함수를 이용하여 두개의 이미지를 각각의 픽셀 단위로 덧셈을 한 후 255보다 큰 경우 255를 픽셀 값으로 설정 합니다. (250 + 7 = 257 -> 255)

 

cv2.add(src1, src2[, dst[, mask[, dtype]]]) → dst

 

parameter

내용

src1

이미지 파일

src2

이미지 파일

dst

결과 파일

mask

영역 지정

dtype

output depth

 

이미지를 더하는 예제


import numpy as np

import cv2

 

img1 = 'F:/Python/images/image001.png'

img2 = 'F:/Python/images/image002.png'

 

# image read

imread1 = cv2.imread(img1, cv2.IMREAD_COLOR)

imread2 = cv2.imread(img2, cv2.IMREAD_COLOR)

 

# image add

img_plus = imread1 + imread2

img_add = cv2.add(imread1, imread2)

 

# image show

cv2.imshow('image + ', img_plus)

cv2.imshow('image add', img_add)

 

cv2.waitKey(0)

cv2.destroyAllWindows()



두개의 이미지를 이용하여 연산을 진행 합니다.


image001.png

opencv_bit_add


image002.png

opencv_bit_add


- modulo 연산


메뚜기 사진의 배경이 거의 없어서 배경을 제외 하고는 물체 확인이 어렵습니다.


opencv_bit_add


- Saturation 연산


이것도 원본 사진을 보지 않은 경우에는 예측이 어렵습니다.


opencv_bit_add


4.3 이미지 Blending

 

cv2.addWeighted()

두개의 이미지에 각각의 가중치를 조절하여 덧셈하는 방법입니다가중치의 값이 큰 이미지가 좀더 선명하게 나타 납니다.

 

cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) → dst


parameter

내용

src1

이미지1

alpha

이미지1 가중치

src2

이미지2

beta

이미지2 가중치

gamma

각 덧셈에 추가하는 값

dst

결과 이미지

dtype

depth

 

dst[i] = saturate(src1[i]*alpha + src2[i]*beta + gamma)


import numpy as np

import cv2

 

img1 = 'F:/Python/images/image001.png'

img2 = 'F:/Python/images/image002.png'

 

# image read

imread1 = cv2.imread(img1, cv2.IMREAD_COLOR)

imread2 = cv2.imread(img2, cv2.IMREAD_COLOR)

 

def weight (x):

    pass

 

cv2.namedWindow('image')

cv2.createTrackbar('Weight', 'image', 0, 100, weight)

 

while True:

    weight = cv2.getTrackbarPos('Weight','image')

    addWeight = cv2.addWeighted(imread1,float(100-weight) * 0.01, imread2,float(weight) * 0.01,0)

    cv2.imshow('image', addWeight)

 

    if cv2.waitKey(1) &0xFF == 27:

        break;

 

cv2.waitKey(0)

cv2.destroyAllWindows()


가중치가 높은 이미지가 선명하게 보이게 됩니다우리가 흔하게 볼 수 있는 은은한 장면 전환과 같습니다.


opencv_bit_add





eclipse에서 단순히 클릭만으로 angular 프로젝트를 생성해서 테스트를 진행 했었는데

이번에는 여기에 페이지를 추가하는 작업을 해보겠습니다.


단순 프로젝트는 [angular] eclipse에서 간단한 project 테스트 이곳을 참조 하세요.

 

페이지를 추가하는 방법도 매우 간단 합니다.



1. Component 추가


component 추가를 해보겠습니다.

 

프로젝트에 마우스를 놓고 우측 버튼을 클릭 합니다.

 

New > Component

 

를 선택 하면 컴포넌트 생성 팝업 창이 나타납니다.


angular component add


여기서 저는


company-vision


으로 Name을 설정하였습니다. 각자 편한 대로 기입하세요.


Component Name을 기입하면 하단에 Class 명칭도 실시간 자동으로 생성되는 모습을 볼 수 있습니다.


[Next] 버튼을 클릭 합니다.



그냥 [finish]를 선택 해도 되지만 한가지 보고 가려고 합니다.

 

바로 console mode 에서 어떤 명령으로 생성하는지 보여줍니다.



이제 [Finish] 버튼을 클릭 합니다.

 

company-vision 이라는 컴포넌트 명으로 디렉토리가 생성 되었고

새로운 웹페이지를 구성하는 4개의 파일도 생성 되었습니다.





2. 생성 파일


새로운 컴포넌트를 생성하면 기존 파일에는 어떤 변화가 있을까요?

1개의 파일에 변화가 발생 합니다.


app.module.ts 파일에 component를 자동으로 등록한걸 볼 수 있습니다.


import { CompanyVisionComponent } from './company-vision/company-vision.component';

 

/src/app/app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { CompanyVisionComponent } from './company-vision/company-vision.component';

@NgModule({
  declarations: [
    AppComponent,
    CompanyVisionComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }


그럼 신규 생성 파일들 중에 중요한 파일만 내용을 보겠습니다.


company-vision.component.ts 파일을 열어 보면 신규 생성 파일의 구성을 볼 수 있습니다.


htmlcss 파일 그리고 중요한 랜더링 입니다.


company-vision<app-company-vision> 랜더링 되겠네요.


/src/app/company-vision/company-vision.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-company-vision',
  templateUrl: './company-vision.component.html',
  styleUrls: ['./company-vision.component.css']
})
export class CompanyVisionComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}


그럼 html에는 어떤 내용이 있는지 보겠습니다.

 

/src/app/company-vision/company-vision.component.html


<p>
  company-vision works!
</p>


별거 없군요.




3. 신규 페이지 메인에 추가


 

지금 생성한 company-vision을 초기 웹페이지 index.html에 삽입이 가능 한지 해보겠습니다.

기존에

<body >
 <app-root > </app-root >
</body >


이렇게 되어 있는데 이곳에 새로 생성한 페이지를 추가 해서

<body>
  <app-root></app-root>

  <app-company-vision></app-company-vision>
</body>

이렇게 하고 테스트를 진행 해 보겠습니다.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>MyNgProject</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>

  <app-company-vision></app-company-vision>
</body>
</html>


그리고

company-vision.component.html 도 글씨를 좀 키우겠습니다.

 

<h1>
<p>
  company-vision works!
</p>
</h1>

. 이제 프로젝트를 실행 합니다.


프로젝트 명에 마우스를 놓고 우측버튼을 클릭하고


Run As > Angular Web Application



잠시 기다리면 웹 브라우저가 열립니다.



? 없네요?


하단이 깨끗하군요.

멀 잘못 했을까요?


컴포넌트를 하나 생성 하면 company-vision에 웹 페이지관련 파일들이 들어 있고

기존 파일 중에 component들을 관리 하는 파일이 하나 있습니다.


/src/app/app.module.ts


바로 이 파일에 컴포넌트를 자동으로 추가를 해주지만 사용 여부는 개발자가 해줘야 겠죠.


bootstrap: [AppComponent, CompanyVisionComponent]


추가를 했습니다.

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { CompanyVisionComponent } from './company-vision/company-vision.component';

@NgModule({
  declarations: [
    AppComponent,
    CompanyVisionComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent, CompanyVisionComponent]
})
export class AppModule { }


다시 실행해 봅니다.



잘 나오는 군요.

 


4. 변수 추가


여기서 조금만 더 가보겠습니다.


/src/app/company-vision/company-vision.component.ts

 

이 파일의 class에 변수 하나를 추가하고


companyVision: string;

 

생성자에 변수의 초기값을 부여하겠습니다.


this.companyVision = 'Good Good!!';


import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-company-vision',
  templateUrl: './company-vision.component.html',
  styleUrls: ['./company-vision.component.css']
})
export class CompanyVisionComponent implements OnInit {

companyVision: string;

  constructor() {
    this.companyVision = 'Good Good!!';
  }

  ngOnInit() {
  }

}


/src/app/company-vision/company-vision.component.html


html에는 변수를 대입합니다.


<h1>
<p>
  company-vision: {{companyVision}}!
</p>
</h1>


자. 프로젝트를 다시 실행 합니다.



class에서 여러가지 java script(type script) 작업을 하면 html에 반영을 할 수 있습니다.

 

다음에는 좀더 가보도록 하겠습니다.


- copy coding -


1

+ Recent posts