1. 程式人生 > >PHP實現圖片壓縮

PHP實現圖片壓縮

/**
 * 生成圖片
 * @param string $im 源圖片路徑
 * @param string $dest 目標圖片路徑
 * @param int $maxwidth 生成圖片寬
 * @param int $maxheight 生成圖片高
 */
function resizeImage($im, $dest, $maxwidth, $maxheight) {
    $img = getimagesize($im);
    switch ($img[2]) {
        case 1:
            $im = @imagecreatefromgif($im);
            break;
        case 2:
            $im = @imagecreatefromjpeg($im);
            break;
        case 3:
            $im = @imagecreatefrompng($im);
            break;
    }

    $pic_width = imagesx($im);
    $pic_height = imagesy($im);
    $resizewidth_tag = false;
    $resizeheight_tag = false;
    if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
        if ($maxwidth && $pic_width > $maxwidth) {
            $widthratio = $maxwidth / $pic_width;
            $resizewidth_tag = true;
        }

        if ($maxheight && $pic_height > $maxheight) {
            $heightratio = $maxheight / $pic_height;
            $resizeheight_tag = true;
        }

        if ($resizewidth_tag && $resizeheight_tag) {
            if ($widthratio < $heightratio)
                $ratio = $widthratio;
            else
                $ratio = $heightratio;
        }


        if ($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
        if ($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;
        $newwidth = $pic_width * $ratio;
        $newheight = $pic_height * $ratio;

        if (function_exists("imagecopyresampled")) {
            $newim = imagecreatetruecolor($newwidth, $newheight);
            imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
        } else {
            $newim = imagecreate($newwidth, $newheight);
            imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
        }

        imagejpeg($newim, $dest);
        imagedestroy($newim);
    } else {
        imagejpeg($im, $dest);
    }
}

/**
 * 圖片壓縮處理
 * @param string $sFile 源圖片路徑
 * @param int $iWidth  自定義圖片寬度
 * @param int $iHeight 自定義圖片高度
 * @return string      壓縮後的圖片路徑
 */
function getThumb($sFile,$iWidth,$iHeight){
    //圖片公共路徑
	$public_path = '';
	//判斷該圖片是否存在
    if(!file_exists($public_path.$sFile)) return $sFile;
    //判斷圖片格式(圖片檔案字尾)
	$extend = explode("." , $sFile);
    $attach_fileext = strtolower($extend[count($extend) - 1]);
    if (!in_array($attach_fileext, array('jpg','png','jpeg'))){
        return '';
    }
    //壓縮圖片檔名稱
    $sFileNameS = str_replace(".".$attach_fileext, "_".$iWidth.'_'.$iHeight.'.'.$attach_fileext, $sFile);
    //判斷是否已壓縮圖片,若是則返回壓縮圖片路徑
    if(file_exists($public_path.$sFileNameS)){
        return $sFileNameS;
    }

    //生成壓縮圖片,並存儲到原圖同路徑下
    resizeImage($public_path.$sFile, $public_path.$sFileNameS, $iWidth, $iHeight);
    if(!file_exists($public_path.$sFileNameS)){
        return $sFile;
    }
    return $sFileNameS;
}

使用例項:

//原圖  		img/img.jpg
//生成壓縮圖 	img/img_300_300.jpg
getThumb('img/img.jpg',300,300);

相關推薦

PHP實現圖片壓縮同時保持清晰度

縮小 con col inf turn 清晰 實驗 www lower PHP實現圖片壓縮同時保持清晰度 圖片太大是一個經常遇到的問題,為此很多人頭疼。今天告訴大家如何實現PHP程序簡單實現壓縮: 圖片原大小: 壓縮後: 這是我自己實驗的,可以處理多種圖片格式。 當然圖

php實現圖片壓縮依舊保持清晰度

PHP實現圖片壓縮同時保持清晰度圖片太大是一個經常遇到的問題,為此很多人頭疼。今天告訴大家如何實現PHP程式簡單實現壓縮:圖片原大小:壓縮後:這是我自己實驗的,可以處理多種圖片格式。當然圖片原圖越大,越能體現出壓縮來。現在附上程式碼:<?php /** * 圖片壓縮類

PHP實現圖片壓縮

/** * 生成圖片 * @param string $im 源圖片路徑 * @param string $dest 目標圖片路徑 * @param int $maxwidth 生成圖片寬 * @param int $maxheight 生成圖片高 */ func

Jquery+HTML5+PHP實現前臺壓縮圖片並上傳

先上圖吧: 待上傳 上傳後 功能描述: 使用HTML5在前臺進行圖片壓縮,然後上傳至伺服器上由PHP儲存。此外掛只適用於PC端,未做手機端頁面優化,如果需要應用在手機端請自行優化UI,即然是PC端為什麼還要前端壓縮呢?PC端很容易使用圖片處理軟體進行壓縮,那是適用於

php實現ZIP壓縮文件解壓縮

pre tin zip壓縮 trac 存在 fun pcl 截取 ech 測試使用了兩個辦法都可以實現: 第一個:需要開啟配置php_aip.dll 1 <?php 2 //需開啟配置 php_zip.dll 3 //phpinfo(); 4 header(

(轉)Android學習-使用Async-Http實現圖片壓縮並上傳功能

activit 一次 make down cte hot for lfw ram (轉)Android學習-使用Async-Http實現圖片壓縮並上傳功能 文章轉載自:作者:RyaneLee鏈接:http://www.jianshu.com/p/940fc7ba39e1

springboot整合thumbnailator實現圖片壓縮

ins 成功 ioe bstr case 圖片壓縮 lte 情況 tid springboot整合thumbnailator實現圖片壓縮 前言 最近由於首頁產品列表圖片顯示太慢,經過研究發現是用戶上傳的圖片太大。 針對這個問題,想到的解決方案是: 1、 產品上傳時,

java使用google開源工具實現圖片壓縮

前言 作為靠譜的java服務端程式設計師,圖片這個事情一直是個頭疼的事情。 現在很多網站上,都有上傳圖片這個功能,而圖片對於現在的很多手機來說,拍攝出來的都是高清圖片,解析度也是相當的高,當然佔用的儲存空間也就大了。問題也就產生了,你每個使用者都上傳個3M的圖片怎麼辦?

【前端】js+php實現圖片拖拽上傳

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>拖拽圖片上傳</title> </head> <body>

Java實現圖片壓縮程式碼,圖片大小轉換

package org.util; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.CropImageFilter; import jav

Apache httpd + php實現圖片縮圖訪問

Apache httpd + php + imagic 實現圖片縮圖訪問 環境:CentOS7, Apache httpd 2.4, php 5.4.16 實現思路 利用httpd的重寫規則把特殊的URL訪問對映到PHP指令碼,實現縮圖的返回。PHP利

PHP實現圖片加文字/圖案水印

需求:在一張背景圖上新增二維碼(帶不同),並且個人名字,聯絡方式和個人頭像。 思路:二維碼和頭像相當於往圖片上新增圖片,個人姓名和聯絡方式相當於玩圖片上新增文字,這就是文字/圖案水印了。思路就是上網百度!! $dst_path = 'dst.jpg';

基於canvas實現圖片壓縮

用法: compressImg(target.files[0], 2).then(base64 => { console.log(base64) // 在這裡實現壓縮後的上傳操作 // ... }).catch(err => { // 壓縮異常 Indicator.c

Android中利用Picasso實現圖片壓縮指定任意尺寸

之前做專案時,有個需求是指定照片壓縮到任意寬高尺寸上傳給伺服器。當時我自己寫了個圖片壓縮方法,但是不夠完美,小問題不斷(比如OOM之類的)。後來看到了神器Picasso不光能載入網路圖片,還能以任意尺寸載入本地圖片。於是我想,既然Picasso能任意尺寸載入本地圖片,那它肯

php實現圖片縮放,超詳細註釋

<?php //header("content-type:image/png"); * @todo 把一張圖片按照使用者定義的高寬進行縮放,並把處理後的圖片重新命名,放在指定資料夾 * @param string $width:使用者定義的需要處理成的目標寬度 * @param string

PHP實現圖片上傳至阿里雲OSS

       今天博主在實現一個頭像上傳功能,需要將圖片上傳至阿里雲的OSS,所以也是百度、谷歌了一番,但都不是很管用,所以自己研究了一番,並將上傳的方法封裝成一個類進行呼叫,下面向大家分享這個過程,在這之前先下載阿里雲OSS的SDK。   &n

php簡單圖片壓縮,基於laravel框架的原生處理

if($image->getClientMimeType() == "image/png"){//圖片格式$src = @imagecreatefrompng ($image->getRealPath());  //建立畫布,從快取檔案路徑載入圖片list($wi

php 實現圖片的裁剪

例如上傳頭像時,或展示影象時,展示的圖片大小不一,所以就需要把的圖片裁剪一下<?php $src_path = 'localhost/1.jpg';//建立源圖的例項, 從字串中的影象流新建一副影象$src = imagecreatefromstring(file_ge

微信小程式呼叫攝像頭,實現圖片壓縮上傳

這篇文章主要為大家詳細介紹了微信小程式實現圖片壓縮功能,具有一定的參考價值,感興趣的小夥伴們可以參考一下,下面直接上程式碼 先是wxml: <view bindtap='takePictures'>選擇圖片</view> <canv

imgareaselect + php實現圖片裁剪

簡介 使用 引用css /js/jquery.imgareaselect-0.9.10/css/imgareaselect-default.css 引用js /j