백엔드 개발 PHP 튜토리얼 Kindeditor 편집기에 이미지 업로드 워터마크 구현 방법 추가

Kindeditor 편집기에 이미지 업로드 워터마크 구현 방법 추가

Jan 30, 2018 pm 02:07 PM
kindeditor 업로드 편집자

이 글은 Kindeditor 에디터 플러스 이미지 업로드 워터마크 기능을 주로 소개합니다. 관심있는 친구들이 참고하시면 도움이 될 것 같습니다.

KindEditor는 오픈 소스 온라인 HTML 편집기입니다. 개발자는 KindEditor를 사용하여 기존의 여러 줄 텍스트 입력 상자(텍스트 영역)를 시각적인 서식 있는 텍스트 입력 상자로 바꿀 수 있습니다. Java, .NET, PHP, ASP 및 기타 프로그램과 원활하게 통합될 수 있으며 CMS, 쇼핑몰, 포럼, 블로그, Wiki 및 이메일과 같은 인터넷 응용 프로그램에서 사용하기에 더 적합합니다.
주요 기능:

빠름: 작은 크기, 빠른 로딩 속도

오픈 소스: 오픈 소스 코드, 높은 수준, 고품질

하단 레이어: 내장 사용자 정의 DOM 클래스 라이브러리, 정확한 DOM 작동

확장: 플러그 -인 기반 디자인, 모든 기능은 플러그인이며 필요에 따라 추가 또는 삭제할 수 있습니다

스타일: 편집기 스타일을 수정하는 것은 매우 쉽습니다. CSS 파일만 수정하면 됩니다.

호환성: 다음과 같은 대부분의 주류 브라우저를 지원합니다. IE, Firefox, Safari, Chrome, Opera

기본 편집기에서 이미지를 업로드할 때 워터마크 기능이 없습니다. 자세한 소개는 다음과 같습니다.

1단계: upload_json.php 파일 수정

편집기의 /php/ 디렉토리에서 할 수 있습니다. 이 파일을 찾아 함수를 추가하세요.


/*
  * 功能:PHP图片水印,水印支持图片或文字
  * 参数:
  * $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
  * $waterPos 水印位置,有10种状态,0为随机位置;
  *  1为顶端居左,2为顶端居中,3为顶端居右;
  *  4为中部居左,5为中部居中,6为中部居右;
  *  7为底端居左,8为底端居中,9为底端居右;
  * $waterImage 图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
  * $alpha 水印透明度,取值1-100;
  * $waterText 文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
  * $textFont 文字大小,值为1、2、3、4或5,默认为5;
  * $textColor 文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
  *
  * $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
  * 当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
  * 加水印后的图片的文件名和 $groundImage 一样。
*/
function imageWaterMark($groundImage, $waterPos=0, $waterImage='', $alpha=80, $waterText='', $water_fontfile, $textFont=9, $textColor='#FF0000'){
  $isWaterImage = FALSE;
  $formatMsg = '不支持该图片格式!请使用GIF、JPG、PNG格式的图片。';
  $fontFile = $water_fontfile;
  //读取水印文件
  if(!empty($waterImage) && file_exists($waterImage)){
    $isWaterImage = TRUE;
    $water_info = getimagesize($waterImage);
    $water_w = $water_info[0];//取得水印图片的宽
    $water_h = $water_info[1];//取得水印图片的高
    switch($water_info[2]){//取得水印图片的格式
      case 1:$water_im = imagecreatefromgif($waterImage);break;
      case 2:$water_im = imagecreatefromjpeg($waterImage);break;
      case 3:$water_im = imagecreatefrompng($waterImage);break;
      default:die($formatMsg);
    }
  }
  //读取背景图片
  if(!empty($groundImage) && file_exists($groundImage)){
    $ground_info = getimagesize($groundImage);
    $ground_w = $ground_info[0];//取得背景图片的宽
    $ground_h = $ground_info[1];//取得背景图片的高
    switch($ground_info[2]){//取得背景图片的格式
      case 1:$ground_im = imagecreatefromgif($groundImage);break;
      case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
      case 3:$ground_im = imagecreatefrompng($groundImage);break;
      default:die($formatMsg);
    }
  }else{
    alert("水印图片不存在!");
  }
  //水印位置
  if($isWaterImage){//图片水印
    $w = $water_w;
    $h = $water_h;
    $label = "图片的";
  }else{//文字水印
    $temp = imagettfbbox($textFont, 0, $fontFile, $waterText);//取得使用 TrueType 字体的文本的范围
    $w = $temp[2] - $temp[6];
    $h = $temp[3] - $temp[7];
    unset($temp);
    $label = "文字区域";
  }
  if(($ground_w<$w) || ($ground_h<$h)){
    echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!";
    return;
  }
  switch($waterPos){
    case 0://随机
    $posX = rand(0,($ground_w - $w));
    $posY = rand(0,($ground_h - $h));
    break;
    case 1://1为顶端居左
    $posX = 0;
    $posY = 0;
    break;
    case 2://2为顶端居中
    $posX = ($ground_w - $w) / 2;
    $posY = 0;
    break;
    case 3://3为顶端居右
    $posX = $ground_w - $w;
    $posY = 0;
    break;
    case 4://4为中部居左
    $posX = 0;
    $posY = ($ground_h - $h) / 2;
    break;
    case 5://5为中部居中
    $posX = ($ground_w - $w) / 2;
    $posY = ($ground_h - $h) / 2;
    break;
    case 6://6为中部居右
    $posX = $ground_w - $w;
    $posY = ($ground_h - $h) / 2;
    break;
    case 7://7为底端居左
    $posX = 0;
    $posY = $ground_h - $h;
    break;
    case 8://8为底端居中
    $posX = ($ground_w - $w) / 2;
    $posY = $ground_h - $h;
    break;
    case 9://9为底端居右
    $posX = $ground_w - $w;
    $posY = $ground_h - $h;
    if(!$isWaterImage){
    $posY = $ground_h - $h-20;
    }
    break;
    default://随机
    $posX = rand(0,($ground_w - $w));
    $posY = rand(0,($ground_h - $h));
    break;
  }
  //设定图像的混色模式
  imagealphablending($ground_im, true);
  if($isWaterImage){//图片水印
    //imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件
    //生成混合图像
    imagecopymerge($ground_im, $water_im, $posX, $posY, 0, 0, $water_w, $water_h, $alpha);
  } else {//文字水印
    if( !empty($textColor) && (strlen($textColor)==7)){
      $R = hexdec(substr($textColor,1,2));
      $G = hexdec(substr($textColor,3,2));
      $B = hexdec(substr($textColor,5));
    } else {
      die("水印文字颜色格式不正确!");
    }
    imagestring($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
  }
  //生成水印后的图片
  @unlink($groundImage);
  switch($ground_info[2]){//取得背景图片的格式
    case 1:imagegif($ground_im,$groundImage);break;
    case 2:imagejpeg($ground_im,$groundImage,100);break;//注意这里的100,经测试,100是图片质量最佳的,但文件大小会增加很多,95的时候质量还不错,大小和原来的差不多。作者采用95的值。
    case 3:imagepng($ground_im,$groundImage);break;
    default:die($errorMsg);
  }
  //释放内存
  if(isset($water_info)) unset($water_info);
  if(isset($water_im)) imagedestroy($water_im);
  unset($ground_info);
  imagedestroy($ground_im);
}
로그인 후 복사

2단계: Find $json = new Services_JSON(); , 경고 기능에 있는 것이 아닌 다음 코드를 추가하십시오:


 /* 水印配置开始 */
  $water_mark = 1;//1为加水印, 其它为不加
  $water_pos = 9;//水印位置,10种状态【0为随机,1为顶端居左,2为顶端居中,3为顶端居右;4为中部居左,5为中部居中,6为中部居右;7为底端居左,8为底端居中,9为底端居】
  $water_img = $_SERVER[&#39;DOCUMENT_ROOT&#39;].&#39;/upfiles/water.gif&#39;;//水印图片,默认填写空,请将图片上传至网站根目录的upfiles下,例: water.gif
  $water_alpha = 50;//水印透明度
  $water_text = &#39;&#39;;//水印字符串,默认填写空;
  //$water_fontfile = $_SERVER[&#39;DOCUMENT_ROOT&#39;] .&#39;/upfiles/fonts/arial.ttf&#39;;//文字水印使用的字体;
  if($water_mark == 1){
    imageWaterMark($file_path, $water_pos, $water_img, $water_alpha, $water_text, $water_fontfile);
  }
  /* 水印配置结束 */
로그인 후 복사

테스트 후에는 정상적으로 사용할 수 있습니다. 또 다른 점은 워터마크 이미지의 경로가 실제에 따라 달라지므로 주의하시기 바랍니다. 상황.

관련 권장사항:

PHP는 워터마크를 추가하고 썸네일을 생성할 수 있는 처리 도구를 구현합니다.

PHP는 이미지의 색상 영역 위치에 따라 워터마크를 추가합니다.

Baidu 편집기는 이미지 워터마크 기능을 추가합니다

위 내용은 Kindeditor 편집기에 이미지 업로드 워터마크 구현 방법 추가의 상세 내용입니다. 자세한 내용은 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Windows 11에서 너무 긴 파일 이름이나 확장자를 수정하는 방법은 무엇입니까? Windows 11에서 너무 긴 파일 이름이나 확장자를 수정하는 방법은 무엇입니까? Apr 22, 2023 pm 04:37 PM

파일을 전송하는 동안 문제가 발생하여 그렇게 할 수 없었던 적이 있습니까? 최근 많은 Windows 사용자들이 파일을 폴더에 복사하고 붙여넣는 동안 "대상 폴더의 파일 이름이 너무 깁니다"라는 오류가 발생하는 문제에 직면했다고 보고했습니다. 또한 일부 다른 Windows 사용자는 파일을 열 때 "파일 이름이나 확장자가 너무 길어" 파일을 열 수 없다는 불만을 표시했습니다. 이는 파일을 다른 폴더로 전송할 수 없도록 하여 사용자를 실망시킵니다. 문제를 분석하는 동안 문제를 완화하고 사용자가 파일을 쉽게 전송할 수 있도록 하는 일련의 솔루션을 생각해 냈습니다. 비슷한 상황에 처한 경우 자세한 내용은 이 게시물을 참조하세요. 출처: https

Windows 11, 10에서 Windows Defender 스마트 화면을 끄는 방법은 무엇입니까? Windows 11, 10에서 Windows Defender 스마트 화면을 끄는 방법은 무엇입니까? Apr 26, 2023 am 11:46 AM

최근 많은 Windows 사용자들은 Windows Defender SmartScreen이 사용자에게 Microsoft Windows에서 인식되지 않는 응용 프로그램을 시작하지 말라고 경고하고 매번 "어쨌든 실행" 옵션을 클릭해야 했을 때 짜증이 났다고 보고했습니다. Windows 사용자는 이를 방지하거나 비활성화하기 위해 현재 무엇을 할 수 있는지 확신하지 못합니다. 문제를 조사한 결과 설정 응용 프로그램이나 로컬 그룹 정책 편집기를 통해 또는 레지스트리 파일을 조정하여 시스템의 Windows Defender 기능을 비활성화할 수 있음을 발견했습니다. 이렇게 하면 사용자는 더 이상 수비수 SmartScreen을 마주할 필요가 없습니다. 시스템에서도 다음과 같은 문제가 발생하는 경우

15가지 Python 편집기/IDE에 대한 자세한 가이드, 항상 귀하에게 적합한 것이 있습니다! 15가지 Python 편집기/IDE에 대한 자세한 가이드, 항상 귀하에게 적합한 것이 있습니다! Aug 09, 2023 pm 05:44 PM

통합 개발 환경(IDE)을 사용하는 것보다 Python 코드를 작성하는 더 좋은 방법은 없습니다. 작업을 더욱 단순하고 논리적으로 만들 수 있을 뿐만 아니라 프로그래밍 경험과 효율성도 향상시킬 수 있습니다. 모두가 이것을 알고 있습니다. 문제는 수많은 옵션 중에서 최고의 Python 개발 환경을 선택하는 방법입니다.

FastAPI에서 파일 업로드 및 처리를 구현하는 방법 FastAPI에서 파일 업로드 및 처리를 구현하는 방법 Jul 28, 2023 pm 03:01 PM

FastAPI에서 파일 업로드 및 처리를 구현하는 방법 FastAPI는 사용하기 쉽고 강력한 최신 고성능 웹 프레임워크로 파일 업로드 및 처리를 기본적으로 지원합니다. 이 기사에서는 FastAPI 프레임워크에서 파일 업로드 및 처리 기능을 구현하는 방법을 알아보고 특정 구현 단계를 설명하는 코드 예제를 제공합니다. 먼저, 필수 라이브러리와 모듈을 가져와야 합니다: fromfastapiimportFastAPI,UploadF

C 언어 프로그래밍을 위한 필수 소프트웨어: 초보자에게 추천하는 좋은 도우미 5가지 C 언어 프로그래밍을 위한 필수 소프트웨어: 초보자에게 추천하는 좋은 도우미 5가지 Feb 20, 2024 pm 08:18 PM

C 언어는 프로그래밍의 기초이자 중요한 언어입니다. 초보자에게는 적절한 프로그래밍 소프트웨어를 선택하는 것이 매우 중요합니다. 시중에는 다양한 C 프로그래밍 소프트웨어 옵션이 있지만 초보자에게는 자신에게 적합한 것을 선택하는 것이 다소 혼란스러울 수 있습니다. 이 기사에서는 초보자가 빠르게 시작하고 프로그래밍 기술을 향상하는 데 도움이 되는 다섯 가지 C 언어 프로그래밍 소프트웨어를 추천합니다. Dev-C++Dev-C++는 특히 초보자에게 적합한 무료 오픈 소스 통합 개발 환경(IDE)입니다. 간단하고 사용하기 쉬운 통합 편집기,

Win10 컴퓨터에서 느린 업로드 속도 문제를 해결하는 방법 Win10 컴퓨터에서 느린 업로드 속도 문제를 해결하는 방법 Jul 01, 2023 am 11:25 AM

Win10 컴퓨터의 느린 업로드 속도를 해결하는 방법은 무엇입니까? 컴퓨터를 사용하다 보면 우리 컴퓨터의 파일 업로드 속도가 매우 느리다는 것을 느낄 수 있습니다. 그렇다면 현재 상황은 어떠한가요? 사실 이는 컴퓨터의 기본 업로드 속도가 20%이기 때문에 업로드 속도가 매우 느려지기 때문입니다. 많은 친구들이 C 드라이브를 포맷하는 단계를 자세히 정리했습니다. 아래 Win11에 관심이 있으시면 아래를 살펴보세요! Win10의 느린 업로드 속도에 대한 해결 방법 1. win+R을 눌러 실행을 호출하고 gpedit.msc를 입력한 후 Enter를 누릅니다. 2. 관리 템플릿을 선택하고 네트워크--Qos 패킷 스케줄러를 클릭한 다음 제한을 두 번 클릭하여 대역폭을 예약합니다. 3. 활성화됨을 선택하면

QQ Music에 가사를 업로드하는 방법 QQ Music에 가사를 업로드하는 방법 Feb 23, 2024 pm 11:45 PM

디지털 시대가 도래하면서 음악 플랫폼은 사람들이 음악을 얻는 주요 수단 중 하나가 되었습니다. 하지만 가끔 노래를 듣다 보면 가사가 없다는 것을 발견하게 되는데, 이는 매우 혼란스럽습니다. 많은 사람들은 노래를 들을 때 가사가 표시되어 노래의 내용과 감정을 더 잘 이해할 수 있기를 바랍니다. 중국 최대 음악 플랫폼 중 하나인 QQ 뮤직은 사용자에게 가사 업로드 기능을 제공하여 사용자가 음악을 더 잘 즐기고 노래의 의미를 느낄 수 있도록 합니다. QQ뮤직에 가사를 업로드하는 방법은 다음과 같습니다. 첫 번째

Kugou에 자신의 음악을 업로드하는 간단한 단계 Kugou에 자신의 음악을 업로드하는 간단한 단계 Mar 25, 2024 pm 10:56 PM

1. Kugou Music을 열고 프로필 사진을 클릭하세요. 2. 오른쪽 상단의 설정 아이콘을 클릭하세요. 3. [음악작품 업로드]를 클릭하세요. 4. [작품 업로드]를 클릭하세요. 5. 노래를 선택하고 [다음]을 클릭하세요. 6. 마지막으로 [업로드]를 클릭하세요.

See all articles