metin görüntüleri birleştirme

4 Cevap php

Png metin koymak ve sonra bir jpg / gif resim zekâ birleştirmek için bir yolu var mı?

4 Cevap

Eğer (onun php gd etkin ise) ttf veya Tip1 yazı tiplerini kullanarak GD ile resim veya herhangi bir metin çizebilirsiniz.

http://hr.php.net/manual/en/image.examples-watermark.php

İşte ben bunu nasıl.

/* load the image */
$im = imagecreatefrompng("image.png");

/* black for the text */
$black = imagecolorallocate($im, 0, 0, 0);

/* put the text on the image */
imagettftext($im, 12, 0, 0, 0, $black, "arial.ttf", "Hello World");

/* load the jpg */
$jpeg = imagecreatefromjpeg("image.jpeg");

/* put the png onto the jpeg */
/* you can get the height and width with getimagesize() */
imagecopyresampled($jpeg,$im, 0, 0, 0, 0, $jpeg_width, $jpeg_height, $im_width, $im_height);

/* save the image */
imagejpeg($jpeg, "result.jpeg", 100);

Bu olsa oldukça basit bir örnektir.

Eğer kullandığınız dil ne demek, ama Imagemagick birkaç farklı dilde API'ler sahip değilsiniz (http://www.imagemagick.org/script/api.php).

Evet, vardır. PHP kullanarak ve GD kütüphanesi mevcut olduğunu varsayarsak, size kod örneğini kullanabilirsiniz:

Watermark Your Images with another Image Using PHP and GD Library

Kod buna benzer bir şey olacaktır:

define( 'WATERMARK_OVERLAY_IMAGE', 'watermark.png' );
define( 'WATERMARK_OVERLAY_OPACITY', 50 );
define( 'WATERMARK_OUTPUT_QUALITY', 90 );

function create_watermark( $source_file_path, $output_file_path )
{
 list( $source_width, $source_height, $source_type ) = getimagesize( $source_file_path );

 if ( $source_type === NULL )
 {
  return false;
 }

 switch ( $source_type )
 {
  case IMAGETYPE_GIF:
   $source_gd_image = imagecreatefromgif( $source_file_path );
   break;
  case IMAGETYPE_JPEG:
   $source_gd_image = imagecreatefromjpeg( $source_file_path );
   break;
  case IMAGETYPE_PNG:
   $source_gd_image = imagecreatefrompng( $source_file_path );
   break;
  default:
   return false;
 }

 $overlay_gd_image = imagecreatefrompng( WATERMARK_OVERLAY_IMAGE );
 $overlay_width = imagesx( $overlay_gd_image );
 $overlay_height = imagesy( $overlay_gd_image );

 imagecopymerge(
  $source_gd_image,
  $overlay_gd_image,
  $source_width - $overlay_width,
  $source_height - $overlay_height,
  0,
  0,
  $overlay_width,
  $overlay_height,
  WATERMARK_OVERLAY_OPACITY
 );

 imagejpeg( $source_gd_image, $output_file_path, WATERMARK_OUTPUT_QUALITY );

 imagedestroy( $source_gd_image );
 imagedestroy( $overlay_gd_image );
}

Watermark.png dosyanın saydam 8-bit PNG görüntüleri de dahil olmak üzere herhangi bir görüntü olabilir. Ancak, beklendiği gibi 24-bit saydam PNG görüntüleri işe yaramayabilir.