PHP简单实现图片格式转换(jpg转png,gif转png等)

需求

开发过程中总会遇到一些需求需要对图片格式进行转换。比如 gif转png,jpg转png

如最近使用某平台的图片文件识别,居然不支持gif格式,那么就需要将gif处理成png等。

依赖

php扩展 gd 和 exif

实现

/**
 * 图片格式转换
 * @param string $image_path 文件路径或url
 * @param string $to_ext 待转格式,支持png,gif,jpeg,wbmp,webp,xbm
 * @param null|string $save_path 存储路径,null则返回二进制内容,string则返回true|false
 * @return boolean|string $save_path是null则返回二进制内容,是string则返回true|false
 * @throws Exception
 * @author klinson <klinson@163.com>
 */
function transform_image($image_path, $to_ext = 'png', $save_path = null)
{
  if (! in_array($to_ext, ['png', 'gif', 'jpeg', 'wbmp', 'webp', 'xbm'])) {
    throw new \Exception('unsupport transform image to ' . $to_ext);
  }
  switch (exif_imagetype($image_path)) {
    case IMAGETYPE_GIF :
      $img = imagecreatefromgif($image_path);
      break;
    case IMAGETYPE_JPEG :
    case IMAGETYPE_JPEG2000:
      $img = imagecreatefromjpeg($image_path);
      break;
    case IMAGETYPE_PNG:
      $img = imagecreatefrompng($image_path);
      break;
    case IMAGETYPE_BMP:
    case IMAGETYPE_WBMP:
      $img = imagecreatefromwbmp($image_path);
      break;
    case IMAGETYPE_XBM:
      $img = imagecreatefromxbm($image_path);
      break;
    case IMAGETYPE_WEBP: //(从 PHP 7.1.0 开始支持)
      $img = imagecreatefromwebp($image_path);
      break;
    default :
      throw new \Exception('Invalid image type');
  }
  $function = 'image'.$to_ext;
  if ($save_path) {
    return $function($img, $save_path);
  } else {
    $tmp = __DIR__.'/'.uniqid().'.'.$to_ext;
    if ($function($img, $tmp)) {
      $content = file_get_contents($tmp);
      unlink($tmp);
      return $content;
    } else {
      unlink($tmp);
      throw new \Exception('the file '.$tmp.' can not write');
    }
  }
}

使用

// 转换后保存在test.png
transform_image($url, 'png', './test.png');
transform_image($filepath, 'png', './test.png');
// 转换后二进制结果直接返回
transform_image($url, 'png');
transform_image($filepath, 'png');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用PHP将图片转换成base64编码的实现方法

    先来说一下为什么我们要对图片base64编码 base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输.由于这些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要转换一下.虽然图片可能直接传输,但是我们也可以将它变成字符串直接放在源码里,而不需要浏览器在读取到源码后再从服务器上下载. 如何使用PHP对图片进行base64解码输出 <?php $img = 'test.jpg'; $base64

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    1,准备要素 1)替换字体的js文件 js代码: function com_stewartspeak_replacement() { /* Dynamic Heading Generator By Stewart Rosenberger http://www.stewartspeak.com/headings/ This script searches through a web page for specific or general elements and replaces them wi

  • php实现图片转换成ASCII码的方法

    本文实例讲述了php实现图片转换成ASCII码的方法.分享给大家供大家参考.具体如下: php图片转换成ASCII码,转换后可以直接通过字符串显示图片 <html> <head> <title>Ascii</title> <style> body{ line-height:0; font-size:1px; } </style> </head> <body> <?php $image = 'image.j

  • PHP实现将base64编码字符串转换成图片示例

    本文实例讲述了PHP实现将base64编码字符串转换成图片.分享给大家供大家参考,具体如下: 步骤: 1. 获取base64文件: 复制代码 代码如下: $image="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRw

  • PHP把JPEG图片转换成Progressive JPEG的方法

    JPEG文件格式有两种保存方式.他们是Baseline JPEG和Progressive JPEG. 两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. Baseline JPEG 这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中.打开这个文件显示它的内容时,数据将按照存储时的顺序从上到下一行一行的被显示出来,直到所有的数据都被读完,就完成了整张图片的显示.如果文件较大或者网络下载速度较慢,那么就会看到图片被一行行加载

  • php将图片文件转换成二进制输出的方法

    本文实例讲述了php将图片文件转换成二进制输出的方法.分享给大家供大家参考.具体实现方法如下: header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fopen('1.jpg', "r"), $PSize); echo $picturedata; 就这么简单4行代码,就将图片以二进制流的形式输出到客户端了,和打开一张图片没有任何区别. 这里需要注意的

  • php图片的二进制转换实现方法

    本文实例讲述了php图片的二进制转换实现方法.分享给大家供大家参考.具体实现方法如下: 这里我们是在上传文件时把上传的文件转换成二进制然后保存到数据的字段中去,下次读读出我们也用同样的方法显示即可. html代码如下: 复制代码 代码如下: <form action="insertPic.php" method="post" enctype="multipart/form-data" name="mainForm" id

  • PHP简单实现图片格式转换(jpg转png,gif转png等)

    需求 开发过程中总会遇到一些需求需要对图片格式进行转换.比如 gif转png,jpg转png 如最近使用某平台的图片文件识别,居然不支持gif格式,那么就需要将gif处理成png等. 依赖 php扩展 gd 和 exif 实现 /** * 图片格式转换 * @param string $image_path 文件路径或url * @param string $to_ext 待转格式,支持png,gif,jpeg,wbmp,webp,xbm * @param null|string $save_p

  • C# 图片格式转换的实例代码

    在日常工作中,经常需要不同格式的图片,有时还需要进行图片格式的相互转换,本文以一个简单的小例子,简述图片格式转换的常见方法,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 OpenFileDialog 打开文件对话框,用于选择文件,可以设置过滤后缀. FolderBrowserDialog 文件夹选择对话框,用于选择一个文件夹,可以新增. ImageFormat 图片类型枚举. Bitmap 位图对象,包含对应的属性和内容. Stream 流对象的基类. FlowLayoutPanel

  • java图片格式转换的三段代码

    网上关于java图片格式内容的文章不是很多,也不是很完整,小编搜集了三段java图片格式转换代码,分享给大家: 第一段:java图片格式转换代码 import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Scanner; import javax.imageio.*; public class FormatConversion { public st

  • java实现截取PDF指定页并进行图片格式转换功能

    1.引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.16</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifa

  • python利用tkinter实现图片格式转换的示例

    代码 import os from PIL import Image import tkinter import tkinter.filedialog import tkinter.messagebox class Window(): def __init__(self): self.root = root = tkinter.Tk() self.menu = tkinter.Menu(root) self.submenu = tkinter.Menu(self.menu, tearoff=0)

  • Winform中实现图片格式转换

    场景 选择一张照片并选择保存位置和要转换的图片格式实现图片格式转换. 项目运行效果 实现 新建一个窗体页面,然后设计页面布局如下 选择图片按钮点击事件中 private void toolStripButton3_Click(object sender, EventArgs e)//选择转换文件的按钮 { if (openFileDialog1.ShowDialog() == DialogResult.OK) //判断是否选择文件 { listView1.Items.Clear(); //清空l

  • python图片格式转换脚本

    目录 前言 1.cv2 1.1 导包 1.2 路径设置 1.3 改格式重新传 1.4 查看结果 2.pillow 2.1 导包 2.2 路径设置 2.3 写格式修改函数 2.4 开始转换 2.5 查看结果 前言 常见的图像任务通常需要把照片统一成相同的格式,所以此文章正是为了统一格式而生,常见的主要有cv2和PIL.Image的相关操作,照片格式是一串数字加上后缀名 1.cv2 pip install opencv-python之后就可以import cv2 1.1 导包 import os i

  • Python实现图片格式转换

    本文实例为大家分享了Python实现图片格式转换的具体代码,供大家参考,具体内容如下 碰上这样一个情景: 我从网络上下载了一张表情包图片,存放在 MyImages 文件夹下,文件类型为 .wepg ,为了能够在QQ上顺利发送,我需要将它转换为常用的 .jpg 或 .jpeg 格式. 如图: 解决: 在 MyImages 目录下创建名为 convert.py 的Python文件,开始代码编写 代码思路: 获取当前目录的文件名列表 开始遍历列表元素 尝试读取图片,如果遇到 IOError (说明不是

  • Python实现图片格式转换小程序

    基于Python实现图片格式转换的小程序,供大家参考,具体内容如下 特点: 1.批量处理图片2.转换常见的4种图片格式 运行窗口 运行窗口-1 选择图片(可批量选择)-2 假设选中4张JEPG格式的图片 格式选择窗口-3 假设选择目标格式PNG 结束窗口-4 结果展示-5 可以发现4个JEPG目标图片成功转换为PNG格式的图片 代码 import tkinter as tk import tkinter.messagebox from tkinter import filedialog from

  • 利用C#实现批量图片格式转换功能

    目录 实践过程 效果 代码 实践过程 效果 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } string[] path1 = null; //用于存储选择的文件列表 string path2 = ""; //用于存储保存的路径 Bitmap bt; //声明一个转换图片格式的Bitmap对象 Thread td; //声明一个线程 int Imgtype1; //声明一个变

随机推荐