echat 사용시 차트를 이미지로 저장 시 옵션에 있는 기능을 사용할 수 있지만

외부 디자인에 넣으려고 할 때도 있다. 찾아보면

 

아래와 같은데 이는 조금 문제가 있다. 확장으로 이미지를 디자인식으로 올린 경우 저장이 동일하게 되지 않는다. 

 // Get canvas information
    let canvas = document.getElementsByTagName("canvas");
    if(canvas&&canvas.length>0){
        // create label
        let tempA = document.createElement("a");
        // Set download name
        tempA.download = "echarts download" +".png";
        // Set address and file type
        tempA.href = canvas[0].toDataURL("image/png");
        document.body.appendChild(tempA);
        // Trigger download event
        tempA.click();
        // Remove Tag
        tempA.remove();
     }

따라서 온전히 저장을 하기 위해서는 echat  내부 api를 사용해야 한다.  

/**
 * @param flNm			저장 파일명 확장자 포함
 * @param chartObj		차트 오브젝트명
 * @param pixelRt		저장 이미지 비율 default 1(1:1)
 * @returns
 */
function downloadURI(flNm, chartObj, pixelRt = 1) {
    var tempA = document.createElement("a");
    tempA.download = flNm ;
    //address 설정하고 파일의 타입 정하기
    tempA.href = chartObj.getDataURL({
        pixelRatio: pixelRt
    });
    document.body.appendChild(tempA);
    //클릭 다운로드 이벤트
    tempA.click();
    //태그를 제거합니다
    tempA.remove();
}

함수로 만들어 보았다.  내부 함수를 이용하면 온전히 이미지로 저장이 가능하다.

 

	public boolean generateVideoBySequenceImages4Jcoder
		(String videoFilename, List<String> filelist,  int FPS) throws Exception {
		boolean result = false;
		SeekableByteChannel out = null;
		
		try {
			out = NIOUtils.writableFileChannel(videoFilename);
		      // for Android use: AndroidSequenceEncoder
            AWTSequenceEncoder encoder = new AWTSequenceEncoder(out, Rational.R(FPS, 1));
            for (String fnpath : filelist) {
            	LOGGER.info(fnpath);
            	
            	File img = new File(fnpath);
            	BufferedImage image = ImageIO.read(img);
            	encoder.encodeImage(image);
            }
            // Finalize the encoding, i.e. clear the buffers, write the header, etc.
            encoder.finish();
            result = true;
			
		} catch (Exception e) {
//			LOGGER.info("generateVideoBySequenceImages Exception: " + e);
			e.printStackTrace();
			
		} finally {
            NIOUtils.closeQuietly(out);
        }
		return result;
	}
    
    ----
    
    ...사용시
    
         String filefullNm = tempPath + fileName + format1.format(time)+ "_jcodec.avi";
        	if ( generateVideoBySequenceImages4Jcoder(filefullNm, filelist, Integer.valueOf(videofps)) ){
        		LOGGER.info("동영상저장 끝:" + filefullNm);
        		result = "true";
        		mv.addObject("filePath", filefullNm);
        	}

참조 : https://stackoverflow.com/questions/55232723/generate-mp4-video-file-by-sequence-png-images-in-java-8

 

Generate MP4 video file by sequence PNG images in Java 8

After testing several tools for Windows 10 found on the network, I had great difficulty in finding one that could carry around 5,000 PNG images in sequence and convert it into a video that was

stackoverflow.com

jcodec 사용하여 순서 이미지들로 동영상 파일 제작 

(sequence images to video)

 

그런데 문제가 발생한다.

계속 발생하는게 아니라 특정 조건에 아래와 같이 발생한다.

Component 1 width should be a multiple of 2 for colorspace: YUV420J

 

찾아 보면 이미지의 넓이와 크기가 짝수여야 한다는 것이다.

 

그래서 원천 이미지를 만들어 내는 곳에 소스를 변경해야 만 처리가 편한다.

사용은 아래와 같이

	
...
  BufferedImage bufImg = ImageIO.read(new ByteArrayInputStream(imageBytes));

  int width          = bufImg.getWidth() ;
  int height         = bufImg.getHeight();
  if ( (width %2) != 0 ) width++;
  if ( (height %2) != 0 ) height++;
  BufferedImage resizedImage = resizeImg(bufImg, width, height);

  ImageIO.write(resizedImage, "png", new File(filefullNm)); 
...
   
   
   	// 크기 재생산
    public BufferedImage resizeImg(BufferedImage inputImage, int width, int height)
            throws IOException {
    	//https://icarus8050.tistory.com/32

        BufferedImage outputImage =
                new BufferedImage(width, height, inputImage.getType());

        Graphics2D graphics2D = outputImage.createGraphics();
        graphics2D.drawImage(inputImage, 0, 0, width, height, null);
        graphics2D.dispose();

        return outputImage;
    }

이와 같이 하면 문제가 없어 질 것이다. 두둥탁~

참 

pom

 

<!--        jcodec   #######################################################################################-->
<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec</artifactId>
    <version>0.2.5</version>
</dependency>

<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec-javase</artifactId>
    <version>0.2.5</version>
</dependency>

 

메이븐도 필수~

 

 

 

 

1. 개요 

 - 수작업 많음

 - 조립쉬움

 - 카페 활용 (프린터보드 등)

 - 출력시 내용확인

 

2. 환경

 - 노즐 관리

 - 프린팅 마다 초기 필라멘트 제거 - 출력물 베이스 없을때

 - 배드 온도 수작업 설정

 - 심플리파이 3D, 슬라이싱

 

   start G-code

----

G28 ; home all axes

배드온도 올리는 스크립트 생각중.

 

   end G-code

----

G91

G1 Z+0.5 E-1 F9000

G90

G1 X-10 Y200 F3600

M104 S0 ; turn off extruder

M140 S0 ; turn off bed

M107 ; fan stop

M84 ; disable motors

 

-> 출력이 끝나면 배드를 앞으로 전진 시키고 시작점으로 노즐을 이동

 

노즐온도

플라멘트에 따라 변경 195~210 

배드온도

50~60

 

지속적 업데이트 예정

1. 상태 

 파이썬을 2.7.5 ( Centos7 기본) 에서 2.7.14 로 업데이트 한 상태에서 python3.X 버전도 추가로 설치

설치 방법은 

https://zladnrms.tistory.com/19

 

 

[CentOS] Python 3.7 설치

기본적으로는 Python 2.7 이 설치되어있으므로, 그와 충돌을 피하기 위한 방법도 필요하다. 2.7 to 3.7 $ sudo yum install gcc openssl-devel  libffi-devel bzip2-devel $ wget https://www.python.org/ftp..

zladnrms.tistory.com

를 이용하여 마지막에

alternatives --install 를 이용한 버전 관리 처리를 추가로 진행

예)

alternatives --install /usr/bin/python python /usr/bin/python2 50

alternatives --install /usr/bin/python python /usr/bin/python3 60

 

여러 버전을 사용하기위한 설치로

설정 변경을 하려면 

alternatives --config python

으로 변경하여 사용한다.

 

까지는 좋았는데 yum 으로 설치 할 일이 생겨 설치 진행을 하니...


#yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.14 (default, Mar 31 2020, 02:52:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

If you cannot solve this problem yourself, please go to
the yum faq at: 

     yum.baseurl.org/wiki/Faq

 

----

위링크도 연결 되지 않는다.

 

여러 구글링하며 찾은 글을 봤더니 2.7 버전차이라고 생각하며 복구하는 여러 방법들이

돌아 다닌다.

1. 2.4 버전 변경 --> 이는 6.0 인듯합니다. 패스

2. /usr/bin/yum --> 파일열어 경로 첫줄에 경로 변경. 하지만 이미 버전이 업된 상태에서 처리가 쉽지 않고 기존

                          상태를 원상복구 하기가 어려워 졌다.  rpm 으로 재설치도 해봤다.

                          해보는것도 괜찮음

하지만, 

기본 상태로 원복은 한번 꼬이기 시작해서 인지 잘 되지 않음...

 

찾다가 다른 싸이트에 발견한 방법이 있음

 

 

# python
Python 2.7.14 (default, Mar 31 2020, 02:52:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import sys
>>> sys.path
....경로 A

이 경로와

# env -u LD_LIBRARY_PATH python

Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import sys
>>> sys.path
....경로 B

A와 B의 상의 함에 있어 발생하는 문제로 반단이 된다고 함.

B 경로에  

'/usr/lib64/python2.7', '/usr/lib64/python2.7' ...

있다면 아래와 같이 설정을 변경해야 합니다. B 형태의 파이썬 실행 (밑줄)의 힌트로 보면

환경변수에 문제가 있음을 알수 있습니다.

 

alias yum='LD_LIBRARY_PATH=/usr/lib64 yum'

 

yum 실행을 환경변수의 구해 받기 않게 실행하게끔 하면 완료

 

개발과 환경 세팅은 참 언제나 신세계

그럼 즐프

증상 : NET::ERR_CERT_AUTHORITY_INVALID 나면서 거리뷰 이미지 표출 기능 로컬에서 개발시에 오류가 발생

 

서버에서는 자신의 인증 및 처리가 되어 있지만, 로컬에서는 처리가 되지 않아서 오류가 나는것으로 판단됩니다.

 

문의를 했더니 


ERR_CERT_COMMON_NAME_INVALID 해당 에러는 인증서에 올바른 subjectAlternativeName 확장이 없는 경우 연결이 비공개로 설정되지 않았다는 NET::ERR_CERT_COMMON_NAME_INVALID 오류가 사용자에게 표시되는 것으로 알려져있습니다.

 

자세한 사항은 고객센터 아래 URL을 확인을 부탁 드립니다.

https://support.google.com/chrome/a/answer/9813310?hl=ko

 

알려진 문제 - Google Chrome Enterprise 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com


이렇게 답변이... 머라고 하는 건지 링크를 가봤지만, 모르겠다. 역시 구글링 뿐이구나 싶다.

 

1. 서버에 인증서 처리를 로컬에 반영하는 분들도 있었다. 처리 방법 하나

2. 크롬에서는 그냥 설정으로 처리를 통해 나오게 한다.

 

전 2번으로 했습니다. 

이거 보여줄려고 말이 길었습니다.

 

크롬 설정에서 좌측 개인정보 및 보안 메뉴서 사이트 설정을 들어가서 밑에서 3번째즈음.

안전하지 않은 콘텐츠 설정

안전하지 않은 콘텐츠 설정을 선택합니다.

 

허용에 pvimgl.map.naver.com 사이트를 추가합니다. 그러면 뽕~ 끝입니다.

그럼 즐프 입니다. ^^

 

 

+ Recent posts