使用 GDLibrary 合并图像

问题描述 投票:0回答:2

我希望你能帮助我。我正在尝试为 WordPress 编写一个函数,它将上传的图像与保存到主题目录中的另一个图像合并。本质上就是水印。我已经快到了,但是我在 GD imagecreatefrompng(); 方面遇到了麻烦。方法,应该有效,但无效。我尝试过 imagecreatefromjpeg 和 imagecreatefromgif,但这些似乎也不起作用。知道我做错了什么吗?

add_action('after_setup_theme','themename_bw_size');
function themename_bw_size() {
  add_image_size('themename-bw-image', 500, 500, true);
}

add_filter('wp_generate_attachment_metadata','themename_bw_filter');
function themename_bw_filter($meta) {
  $file = wp_upload_dir();
  $file = trailingslashit($file['path']).$meta['sizes']['themename-bw-image']['file'];
  list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
  $image = wp_load_image($file);


  // This works. Such work.
  $stamp = imagecreatetruecolor( 100, 100);
  imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
  imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
  imagestring($stamp, 5, 20, 20, 'GDLibrary', 0x0000FF);
  imagestring($stamp, 3, 20, 40, 'Sometimesworks', 0x0000FF);

  // This doesn't work. Oh such want.
  //$stamp = imagecreatefrompng(get_stylesheet_directory() . '/images/test.png);


  imagecopymerge($image, $stamp, 150, 150, 0, 0, 200, 200, 100); //have to play with these numbers for it to work for you, etc.

  switch ($orig_type) {
    case IMAGETYPE_GIF:
      imagegif( $image, $file );
      break;
    case IMAGETYPE_PNG:
      imagepng( $image, $file );
      break;
    case IMAGETYPE_JPEG:
      imagejpeg( $image, $file );
      break;
  }
  return $meta;
}
php wordpress gd
2个回答
0
投票

解决了这个问题。 get_stylesheet_directory() 需要“/assets/”。奇怪但真实。


-1
投票

它对我不起作用,你能发送你的代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.