목차
1. 콘텐츠 소개
二、node压缩图片
웹 프론트엔드 JS 튜토리얼 Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

Jul 23, 2021 am 09:50 AM
node.js 사진 압축

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 다음 기사에서는 Node.js를 사용하여 이미지 압축을 수행하는 방법을 소개합니다.

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

1. 콘텐츠 소개

얼마 전, Qiniu에 사진을 업로드하기 위한 Vscode 플러그인을 개발했는데, 그 당시 아직 한 가지 빠진 기능이 있었는데, 바로 이미지 압축이었습니다. 마침내 해결되었습니다. 레거시 버그(링크에 공백이 있으면 편집자가 멈춤)는 이제 완전한 기능을 갖춘 플러그인으로 간주할 수 있습니다. 관심 있는 친구는 플러그인 를 검색할 수 있습니다. Vscode에서 upload-to-qiniu를 설치합니다. upload-to-qiniu进行安装。

【推荐学习:《nodejs 教程》】

效果预览:

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

二、node压缩图片

一开始是打算用TinyPNG的API实现图片压缩,但是尝试过后发现压缩速度特别慢,而且好像还要花钱,果断就放弃了。改为使用imagemin

这里是有一个坑的: 由于imagemin不可以直接压缩图片,而是需要依赖imagemin-jpegtranimagemin-pngquant,但是在安装imagemin-pngquant时会安装不了,找到了一个原因是说这个库是基于一些底层语言实现,所以不能直接安装,需要在电脑上安装另一个依赖libpng

安装libpng

直接贴一个安装brew的地址:zhuanlan.zhihu.com/p/90508170,只要对着他说的敲命令基本上就可以安装brew啦。最后我们再执行brew install libpng,等到libpng安装成功后,到项目中安装imagemin-pngquant就可以安装上了。

代码实现压缩图片根据需求我们肯定不希望他将图片压缩后放在文件夹里,而是需要在代码中直接获取到压缩后的内容,直接上传到七牛。那么就要用imagemin.buffer,这个方法通过接收一个buffer对象,经过压缩后再返回一个buffer【추천 학습: "nodejs tutorial

"]

효과 미리보기:

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

2. 노드는 이미지를 압축합니다

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개처음에는 TinyPNG의 API를 사용하여 이미지 압축을 하려고 했으나 시도해보았습니다. 압축속도가 엄청 빠르다는 걸 알았고 속도도 느리고 돈도 많이 드는 것 같아서 과감하게 포기했습니다. 대신 imagemin

을 사용하세요.

여기에는 함정이 있습니다. imagemin은 이미지를 직접 압축할 수 없고 imagemin-jpegtranimagemin-pngQuant에 의존해야 하기 때문입니다. imagemin-pngQuant를 설치할 때 설치할 수 없습니다. 제가 찾은 이유 중 하나는 이 라이브러리가 일부 기본 언어를 기반으로 하기 때문에 직접 설치할 수 없다는 것입니다. libpng. 컴퓨터에서 .

Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개

Install libpng

brew 설치 주소를 직접 게시하세요: zhuanlan. zhihu.com/p/90508170, 그가 말하는 대로 명령을 입력하면 기본적으로 Brew를 설치할 수 있습니다. 마지막으로 brew install libpng를 실행합니다. libpng가 성공적으로 설치되면 프로젝트에 imagemin-pngQuant를 설치하면 설치가 가능합니다.

이미지 압축 코드

요구 사항에 따라 우리는 그가 이미지를 압축하여 폴더에 넣는 것을 절대 원하지 않습니다. 대신 코드에서 압축된 콘텐츠를 직접 가져와서 Qiniu에 직접 업로드해야 합니다. . 그런 다음 imagemin.buffer를 사용해야 합니다. 이 메서드는 buffer 개체를 수신하고 압축 후 buffer를 반환합니다. 버퍼를 Qiniu에 직접 업로드하는 아이디어입니다.

// 获取buffer
export const getBufferFromFile = (filePath: string): Promise<Buffer> => {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, function (err: any, res: any) {
      if (!err) {
        resolve(res)
      }
    })
  })
}


// 压缩图片,传入图片文件路径,通过getBufferFromFile方法转为buffer 后进行压缩
const imageGzip = async (loaclFile: string): Promise<any> => {
  const bufferFile = await getBufferFromFile(loaclFile)
  let res
  try {
    res = await imagemin.buffer(bufferFile, {
      plugins: [
        imageminJpegtran(),
        imageminPngquant({
          quality: [0.6, 0.8],
        }),
      ],
    })
  } catch (err) {
    console.log(&#39;error&#39;, err)
    res = null
  }
  return res
}
로그인 후 복사
이렇게 하면 이미지 압축을 쉽게 구현할 수 있습니다. 이제 다시 작성하여 Qiniu에 업로드해 보겠습니다. Qiniu를 업로드하기 위해 파일 경로를 직접 전달할 수 있습니다. 압축 후에는 버퍼만 Qiniu에 업로드해야 합니다.

gzipImage ? 'putStream' : 'putFile'을 사용하세요. putStream, 그렇지 않으면 formUploader .putFile 업로드만 필요합니다.

이제 효과를 실험해 볼 수 있습니다.

컴퓨터에서 png 그림을 선택합니다.

🎜플러그인으로 업로드한 후 링크를 ​​엽니다. 참조: 🎜🎜🎜🎜🎜사진이 성공적으로 압축되었습니다 라~~🎜🎜🎜3. 남은 버그를 해결하세요🎜🎜🎜사용 중 문제가 발견되었습니다. 즉, 가끔 편집기가 갑자기 멈추는 경우가 있었습니다. 그 이유는 링크에 공백이 있으면 항상 멈추고 다른 콘텐츠에 마우스를 올리면 응답이 없기 때문입니다. 따라서 호버 문자열에서 공백을 제거한 후 다음 방법을 실행하여 링크를 얻으세요: 🎜
// 当前行的文本内容
const currentLineText = document.lineAt(position).text.replace(/\s+/g, "")
로그인 후 복사
🎜🎜 IV.End 🎜🎜🎜🎜 왜냐하면 호버에서 사진을 미리 볼 때 일부 사진이 너무 크고 느려지는 것을 방지하기 때문입니다. 로드하려면 Qiniu에 자르기 매개변수가 추가되었으므로 다른 유형의 이미지 링크는 미리 볼 수 없으며 이는 나중에 해결될 예정입니다 ^ ^. 플러그인 소스코드를 🎜github🎜에 올렸으니 누구나 시작을 눌러주세요^ ^. 플러그인에 대한 더 좋은 아이디어가 있으면 서로 소통할 수도 있습니다. 🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 소개🎜를 방문하세요! ! 🎜

위 내용은 Node.js를 사용하여 이미지를 압축하는 방법은 무엇입니까? 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MeituXiuXiu에서 이미지 크기를 압축하는 방법은 무엇입니까? 사진 크기 kb 변경에 대한 Meituxiuxiu 튜토리얼! MeituXiuXiu에서 이미지 크기를 압축하는 방법은 무엇입니까? 사진 크기 kb 변경에 대한 Meituxiuxiu 튜토리얼! Mar 15, 2024 pm 10:34 PM

1. MeituXiuXiu는 이미지 크기를 어떻게 압축합니까? 사진 크기 kb 변경에 대한 Meituxiuxiu 튜토리얼! 1. Meitu Xiu Xiu 앱에 들어가서 사진 미화를 클릭하세요. 2. 최근 프로젝트 인터페이스로 이동하여 압축해야 할 사진을 선택하세요. 3. 사진 인터페이스에 들어가서 아래 편집 옵션을 클릭하세요. 4. 편집 인터페이스로 이동하여 이미지 형식을 선택합니다. 5. 선택이 성공한 후, 사진 중앙의 사이즈를 클릭하여 입력해주세요. 6. 크기 수정 인터페이스로 들어가서 이미지 크기를 조정하고 조정이 완료되면 저장을 클릭합니다. 7. 사진 인터페이스로 돌아가서 오른쪽 하단에 있는 확인 아이콘을 찾아 클릭하세요. 8. 마지막으로 압축된 이미지 인터페이스에서 저장을 클릭하면 이미지가 압축됩니다.

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Nov 16, 2022 pm 08:34 PM

Node 19가 정식 출시되었습니다. 이 글에서는 Node.js 19의 6가지 주요 기능에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? 최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? Dec 13, 2022 pm 08:00 PM

Node용 Docker 이미지를 선택하는 것은 사소한 문제처럼 보일 수 있지만 이미지의 크기와 잠재적인 취약점은 CI/CD 프로세스와 보안에 상당한 영향을 미칠 수 있습니다. 그렇다면 최고의 Node.js Docker 이미지를 어떻게 선택합니까?

Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Node.js의 GC(가비지 수집) 메커니즘에 대해 이야기해 보겠습니다. Nov 29, 2022 pm 08:44 PM

Node.js는 GC(가비지 수집)를 어떻게 수행하나요? 다음 기사에서는 이에 대해 설명합니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

See all articles