`
天梯梦
  • 浏览: 13729581 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

php 添加水印, 格式转换, 变换大小 Watermark, png2jpg, resize

 
阅读更多

 1. 添加水印

 

经测试,效果不错,jpg 尤佳:

<?php
define('WATERMARK_OVERLAY_IMAGE', $_SERVER['DOCUMENT_ROOT'] .'/public/assets/logo.png');

/*
* $img 是图片的绝对路径
* 用法:watermark($_SERVER['DOCUMENT_ROOT'] .'/public/images/bg.jpg'); 
*/
function watermark($img)
{
	ob_start();
	
	// Set content type
	header('Content-type: image/jpg');
	// Cerate watermark
	$wm = imagecreatefrompng(WATERMARK_OVERLAY_IMAGE);
	// getting dimensions of watermark image
	$wm_size = getimagesize(WATERMARK_OVERLAY_IMAGE);
	
	// Create image
	$image = imagecreatefromjpeg($img);
	// Get image size
	$size = getimagesize($img);
	
	// placing the watermark center
	$dest_x = ($size[0] - $wm_size[0])/2;  
	$dest_y = ($size[1] - $wm_size[1])/2;
	
	// blending the images together
	imagealphablending($image, true);
	imagealphablending($wm, true); 
	
	// creating the new image
	imagecopy($image, $wm, $dest_x, $dest_y, 0, 0, $wm_size[0] , $wm_size[1]);
	
	// Send image to the browser 
	imagejpeg($image, null, 100);
	//Save image in cache
	
	// destroy image and watermak
	imagedestroy($image);
	imagedestroy($wm);
	
	$output = ob_get_contents();
	ob_end_clean();
	
	unlink($img);
	
	$size = strlen($output);     
	$ftp  = @fopen($img, "a");    
	fwrite($ftp,$output);     
	fclose($ftp);     
}

 

 2. png2jpg

 

You need to create a fresh image with a white (or whatever you want) background and copy the none-transparent pixels from the png to that image:

function png2jpg($originalFile, $outputFile, $quality) 
{
    $source = imagecreatefrompng($originalFile);
    $image = imagecreatetruecolor(imagesx($source), imagesy($source));

    $white = imagecolorallocate($image, 255, 255, 255);
    imagefill($image, 0, 0, $white);

    imagecopy($image, $source, 0, 0, 0, 0, imagesx($image), imagesy($image));

    imagejpeg($image, $outputFile, $quality);
    imagedestroy($image);
    imagedestroy($source);
}
 

3. gif2jpg

 

For those interested in my solution, I simply used the built in GD PHP functions. I have little experience dealing with gif files so I was expecting this to be difficult. The fact of the matter is the CodeIgniter Image_lib and extended library (Which I never got to work properly) is overkill for this.

$image = imagecreatefromgif($path_to_gif_image);
imagejpeg($image, $output_path_with_jpg_extension);
 

4. Resizing images with PHP

 

The following script will easily allow you to resize images using PHP and the GD library. If you’re looking to resize uploaded images or easily generate thumbnails give it a try

 

Update: Looking to resize transparent PNG’s and GIF’s? We’ve updated our original code, take a look at http://www.white-hat-web-design.co.uk/blog/retaining-transparency-with-php-image-resizing/

 

Usage

Save the code from the ‘the code’ section below as SimpleImage.php and take a look at the following examples of how to use the script.

 

The first example below will load a file named picture.jpg resize it to 250 pixels wide and 400 pixels high and resave it as picture2.jpg

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resize(250,400);
   $image->save('picture2.jpg');
?>
 
If you want to resize to a specifed width but keep the dimensions ratio the same then the script can work out the required height for you, just use the resizeToWidth function.
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(250);
   $image->save('picture2.jpg');
?>
 
You may wish to scale an image to a specified percentage like the following which will resize the image to 50% of its original width and height
<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->scale(50);
   $image->save('picture2.jpg');
?>
 

You can of course do more than one thing at once. The following example will create two new images with heights of 200 pixels and 500 pixels

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToHeight(500);
   $image->save('picture2.jpg');
   $image->resizeToHeight(200);
   $image->save('picture3.jpg');
?>
 

The output function lets you output the image straight to the browser without having to save the file. Its useful for on the fly thumbnail generation

<?php
   header('Content-Type: image/jpeg');
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(150);
   $image->output();
?>
 

The following example will resize and save an image which has been uploaded via a form

<?php
   if( isset($_POST['submit']) ) {
 
      include('SimpleImage.php');
      $image = new SimpleImage();
      $image->load($_FILES['uploaded_image']['tmp_name']);
      $image->resizeToWidth(150);
      $image->output();
   } else {
 
?>
 
   <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="uploaded_image" />
      <input type="submit" name="submit" value="Upload" />
   </form>
 
<?php
   }
?>
 

The code

<?php
 
/*
* File: SimpleImage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
 
class SimpleImage {
 
   var $image;
   var $image_type;
 
   function load($filename) {
 
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
 
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
 
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
 
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
 
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image);
      }
   }
   function getWidth() {
 
      return imagesx($this->image);
   }
   function getHeight() {
 
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
 
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
 
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
 
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }
 
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }      
 
}
?>
 

Further Information

This script will eventually be developed further to include functions for easily sharpening, bluring, cropping, brightening and colouring images.

 

from:  http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

 

分享到:
评论

相关推荐

    给图片添加图片水印

    这段代码会将名为`watermark.png`的水印图片添加到`original.jpg`的右下角,并保存为`output.jpg`。水印的大小会根据原图尺寸自动调整,位置也可以根据需求进行修改。 关于“工具”,可能指的是现成的软件或在线...

    给页面图片添加水印代码

    静态水印通常是指在图片编辑软件中预先添加的,固定位置和大小的标记;而动态水印则是在图片加载时通过前端或后端代码实时生成的,可以根据不同的访问者、时间等因素动态变化。本话题主要关注动态水印,特别是通过...

    excel导出添加水印

    以下是一个简单的示例代码片段,展示了如何添加文字水印(这里假设你已经有一个名为“watermark.png”的水印图片文件): ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; ...

    PHP图片水印缩略图类

    例如,`addImageWatermark($watermarkPath, $position, $opacity, $resize)`方法,`$resize`参数可以决定是否按照原图大小或自定义大小放置水印。 5. **调整图片质量**:在保存图像时,可以调整JPEG或PNG的质量来...

    使用GraphicsMagick处理图片含Demo

    GraphicsMagick是一款强大的开源图像处理工具,它支持各种图像格式,并提供了一系列的命令行工具,可用于执行复杂的图像操作,如添加水印、合成图片、图片转换以及多种图像处理任务。在本文中,我们将深入探讨如何...

    Python如何为图片添加水印

    im_watermark = Image.open("watermark.png") # 替换为你的水印图片路径 im_after = add_watermark_to_image(im_before, im_watermark) im_after.show() # im_after.save('im_after.jpg') ``` 这个函数首先将输入的...

    Java通过POI和JXL给Excel动态添加水印.docx

    在Java编程中,给Excel文件动态添加水印是一项常见的需求,尤其在数据安全和文档保护方面。本示例中,我们将使用Apache POI和JXL库来实现这一功能。Apache POI是Java处理Microsoft Office格式文件(如Excel、Word)...

    imagick 图片处理类

    ImageMagick是一个跨平台的开源软件,支持多种图像格式,如JPEG、PNG、GIF、BMP等,并能执行各种图像处理任务,包括缩放、旋转、裁剪、颜色校正、添加水印等。 1. **基本概念** - Imagick类:Imagick是PHP的扩展,...

    图片缩放、裁切、水印,处理类imagetool.class

    这个类库通常用于优化图像大小,适应不同的显示环境,或者为版权保护添加自定义水印。下面我们将深入探讨这些功能及其实现方式。 首先,**图片缩放** 是调整图像尺寸的过程,以适应特定的展示区域或减少文件大小。...

    PHP 图像处理组件:Intervention/image

    这个组件让你能够方便地对图像进行各种操作,包括但不限于裁剪、旋转、调整大小、添加水印、合成图像等。在 PHP 开发中,尤其是在构建 Web 应用程序、电商平台或者社交媒体平台时,这样的图像处理功能是非常必要的。...

    PearMountain 批量图像处理

    PearlMountain Image Converter 批量图片转码 ...PearlMountain Photo Watermark 批量加水印 Protects your photo's copyright by adding image watermark, text watermark, logo to digital photos in batch mode.

    python 开发图片批量处理器程序

    在这个`batch_process`函数中,我们不仅处理了图片大小,还预留了添加水印的接口,可以根据需要进行扩展。 至于"arm"标签,这通常指的是ARM架构,一种广泛应用于嵌入式设备和移动设备的处理器架构。如果你的图片...

    ImageMagick Tricks

    - **添加水印**:可以使用`composite -gravity south -dissolve 50% watermark.png input.jpg output.jpg`命令为图像添加透明度为50%的水印。 #### 四、使用PHP集成ImageMagick 除了命令行之外,开发者还可以通过...

    ImageMagick

    在网站开发中,ImageMagick和Imagick PHP扩展被广泛用于用户上传图片的处理,例如生成缩略图、调整图片大小以适应网页布局、添加水印或者进行图片美化等。同时,它也可以在数据分析中发挥作用,比如识别图像颜色模式...

    php 缩略图生成类

    首先,GD库是PHP内建的一个图像处理库,它可以处理多种图像格式,如JPEG、PNG、GIF等。GD库提供了基本的图像操作功能,如创建、打开、保存图像,以及调整尺寸、裁剪、添加文字等。然而,GD库在处理复杂图像效果(如...

    php 图片处理类和测试文件

    2. **图像大小调整**:`imagecopyresampled()`函数用于对图像进行高质量的缩放,它可以保持图像的比例并避免像素化。 3. **裁剪图像**:`imagecrop()`函数允许我们指定图像的矩形区域进行裁剪。 4. **旋转图像**:...

    SimpleImage.zip

    支持图片裁剪,加水印,加文字,压缩等功能的php图片处理类。 try { // Create a new SimpleImage object $image = new \claviska\SimpleImage(); // Magic! ✨ $image -&gt;fromFile('image.jpg') // load image....

    image-resize-watermark-sample

    图像调整大小和图像水印样本 设置 GraphicsMagick 设置 ImageMagick 安装依赖npm install 准备摇滚!! 在不损失质量的情况下调整图像...给kitten.jpg添加水印 node watermark.js 它将生成kitten-watermarked.png

    thinkphp5图像处理类

    `think\Image`提供了`open`方法来打开一个图片文件,支持多种格式(如JPEG、PNG、GIF等): ```php $image-&gt;open('path/to/image.jpg'); ``` 4. **基本操作** - **裁剪**:使用`crop`方法,指定裁剪的宽度、...

    tp5.0-image.zip 图像操作

    2. **水印添加**: `think\Image`库提供了`water`方法来添加水印。你可以指定水印的图像路径、位置和透明度。位置可以是预定义的常量,如`THINK_IMAGE_WATER_NORTH`, `THINK_IMAGE_WATER_SOUTH`, 等等。透明度范围...

Global site tag (gtag.js) - Google Analytics