一个图片生成多个尺寸的图片

/**
* 图片显示处理
* *
*/

public function handleProductsImg(){

//视频列表
$model_video = new VideoModel();
$where = array();
$where[] = array(‘video_name‘,‘neq‘,‘‘);
$where[] = array(‘video_id‘,‘gt‘,79);
$data1 = $model_video->getVideoAll($where);

$pro_ids = array_column($data1, ‘products_commonid‘);
// dump($pro_ids);

$model_products = new ProductsModel();

$condition = array();
$condition[] = array(‘products_commonid‘,‘in‘,$pro_ids);
$condition[] = array(‘products_id‘,‘neq‘,108868);
// $_SESSION[‘limit1‘] = 0;
dump($_SESSION);
// dump($_SESSION[‘limit1‘]);
if (!$_SESSION[‘limit1‘]) {
$_SESSION[‘limit1‘] = 0;

}
// dump($_SESSION);die;
// $_SESSION[‘limit1‘] = 0;
$limit = ($_SESSION[‘limit1‘] * 100).","."100";
// $condition[] = array(‘products_state|products_verify‘,‘neq‘,1);
// $condition[] = array(‘products_verify‘,‘=‘,1);
$products_info = $model_products->getProductsListNoPage($condition,‘products_id,products_image,store_id‘,‘‘,‘‘,$limit);

// $products_ids = array_column($products_info, ‘products_id‘);
if (!$products_info) {
dump(123333);die;
}
// dump($products_info);die;

// 判断图片数量是否超限
// $model_album = new AlbumModel();
/*$condition = array();
$condition[] = array(‘store_id‘,‘=‘,$store_id);
$condition[] = array(‘is_default‘,‘=‘,1);
$class_info = $model_album->getOne($condition, ‘album_class‘);*/
//按上传年月日存放,例如2011/04/19/a.jpg
$subpath = date("Y",time()) . "/" . date("m",time()) . "/" . date("d",time()) . "/";
foreach ($products_info as $key => $value) {
//店铺图片分享,增加水印图片
if (@fopen(cthumb($value[‘products_image‘],360,$value[‘store_id‘]),‘r‘)) {
//默认图片
continue;
// return UPLOAD_SITE_URL.DS.‘watermark‘.DS.‘weixin_share.jpg‘;
}

// $this->resize_image(cthumb($value[‘products_image‘]),cthumb($value[‘products_image‘],360,$value[‘store_id‘]),360,360);
$fileName60 = $this->resize_image(cthumb($value[‘products_image‘]),$value[‘products_image‘],$value[‘store_id‘],‘_60‘,60,60);
$fileName240 = $this->resize_image(cthumb($value[‘products_image‘]),$value[‘products_image‘],$value[‘store_id‘],‘_240‘,240,240);
$fileName360 = $this->resize_image(cthumb($value[‘products_image‘]),$value[‘products_image‘],$value[‘store_id‘],‘_360‘,360,360);
$fileName1280 = $this->resize_image(cthumb($value[‘products_image‘]),$value[‘products_image‘],$value[‘store_id‘],‘_1280‘,1280,1280);

dump($fileName60);
dump($fileName240);
dump($fileName360);
dump($fileName1280);

$data[$key][‘products_id‘] = $_SESSION[‘products_id‘][] = $value[‘products_id‘];
$data[$key][‘products_image‘] = $_SESSION[‘products_image‘][] = $fileName360;
}

$_SESSION[‘limit1‘] = $_SESSION[‘limit1‘]+1;
dump($_SESSION);
dump($data);die;
}
/**
* 按照指定的尺寸压缩图片
* @param $source_path 原图路径
* @param $target_path 保存路径
* @param $imgWidth 目标宽度
* @param $imgHeight 目标高度
* @param $store_id 店铺id
* @param $re 前缀
* @return bool|string
*/
private function resize_image($source_path,$target_path,$store_id,$pre,$imgWidth,$imgHeight)
{
$source_info = getimagesize($source_path);
$source_mime = $source_info[‘mime‘];
switch ($source_mime)
{
case ‘image/gif‘:
$source_image = imagecreatefromgif($source_path);
break;
case ‘image/jpeg‘:
$source_image = imagecreatefromjpeg($source_path);
break;
case ‘image/png‘:
$source_image = imagecreatefrompng($source_path);
break;
default:
return false;
break;
}
$target_image = imagecreatetruecolor($imgWidth, $imgHeight); //创建一个彩色的底图
imagecopyresampled($target_image, $source_image, 0, 0, 0, 0, $imgWidth, $imgHeight, $source_info[0], $source_info[1]);

//获取文件拓展名
$ext = $name = strstr($target_path,‘.‘);//strtolower(pathinfo($target_path, PATHINFO_EXTENSION));
$name = strstr($target_path,‘.‘,true);
$header = strstr($source_path,$target_path,true);

//按上传年月日存放,例如2011/04/19/a.jpg
$subpath = date("Y",time()) . "/" . date("m",time()) . "/" . date("d",time()) . "/";
// $apic_cover = $subpath .$apic_cover_pic;
$img_path = $name . $pre . $ext;
$fileName = BASE_UPLOAD_PATH . DS . ATTACH_PRODUCTS . DS . $store_id . DS . $img_path;//$header.$name.‘_360‘.$ext;

dump(‘这里是原路径‘.$source_path);
// dump($ext);
// dump($fileName);
// dump(‘./‘.$fileName);
// if(!imagejpeg($target_image,$fileName)){
if(!imagejpeg($target_image,$fileName)){
$fileName = ‘‘;
}
imagedestroy($target_image);
// dump($fileName);
return $fileName;
}

原文地址:https://www.cnblogs.com/ljl123/p/12299994.html

时间: 2024-11-01 20:11:34

一个图片生成多个尺寸的图片的相关文章

php图片的应用-生成带有水印文字的图片-生成带有水印图标的图片-生成缩略图(//为注释内容,不影响文件执行)

<?php ////////////////定义水印文字函数开始////////////////// function watertext($i,$t='版权所有',$s=20,$c='white',$p=9){ $img = imagecreatefromjpeg($i);   //imagecreatefromjpeg - 由文件或 URL 创建一个新图象. $cc = ''; ////////switch循环,循环水印文字的颜色 开始////// switch($c){ case 'whi

Apache 文件不存在跳转URL(实现指定尺寸的图片不存在,就自动生成图片)

前言 在做很多系统的时候,我们可能都有这样的需求: 在CMS中只维护一张图片,而这张图片在网站的很多地方都需要显示,而且显示的大小不同. 一般做法就是直接使用这张图片,在不同的地方使用 width 和 height 设定图片的显示大小. 场景需求 一般情况下这样做其实就可以了.如下这个场景,如果通过这样做,可能就不太合适了. 场景:CMS 有个海报管理功能,每个大的海报都是一张 1000*2000px 的图片,而且对海报的清晰度有一定的要求,质量不能太差,假定一个海报有 1MB. 然后在网站上有

iOS给图片打水印,并将打过水印的图片生成到沙盒中

- (void)WaterImage{    UIImage *bgImage = [UIImage imageNamed:@"scene"];        // 上下文 : 基于位图(bitmap) ,  所有的东西需要绘制到一张新的图片上去        // 1.创建一个基于位图的上下文(开启一个基于位图的上下文)    // size : 新图片的尺寸    // opaque : YES : 不透明,  NO : 透明    // 这行代码过后.就相当于常见一张新的bitm

HTML5+CSS3鼠标移入移出图片生成随机动画

今天分享使用html+css3+少量jquery实现鼠标移入移出图片生成随机动画,我们先看最终效果图(截图为静态效果,做出来可是动态的哟) 左右旋转 上下移动 缩放 由于时间关系我就不一步步解析各段代码所代表含义,我这里就给出一些思路及关键代码: 1.首先使用ul li展现4张图片 本示例中不仅使用了图片,在图片表面还放置了一段“WEB”字样文字,用于与图片实现隐藏或显示效果,故html中每张图片上方加入: <div class="mytext">WEB</div&g

MVC 生成PDf表格并插入图片

最近做的项目中有一个功能,将最终的个人信息生成PDF表格,并插入图片.对于没接触过的程序员来说回一片茫然,网上有多种生成PDf的方法,我给大家介绍一下我认为比较简单,好操作的一种. iTextSharp组件 使用方法. 1,引入itextsharp.dll 2,  引入命名空间 ? 1 2 3 using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; ? 1 2 3 4 5 6 7 8 9 10 11 12     D

一个小问题——宽,高和图片大小。

打开相册查看一张图片数据如下: JPG格式 宽度:1920px 高度:2560px 文件大小:1.85MB 现在手机上一般采用32位ARG_8888格式保存像素,也就是说一个像素点占用32位,4byte. 所以这张图片的原始数据所占内存大小为1920x2560x4/1024/1024 = 18.75MB 这里的文件大小为1.85MB是因为JPG格式的图片是压缩之后得到的,有一定的压缩比例. 也就是说18.75MB是原始无损图片的大小,1.85MB是保存到相册中压缩生成的jpg文件的大小. 一个小

基础学习笔记之opencv(6):实现将图片生成视频

基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C++版本号中图片输出视频是怎么实现的. 本次试验的数据为摇摆的树枝树叶图片,Waving Trees,其来源网址为: http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.ht 该数据全由bmp图片组成.

LibGdx中使用非2的N次幂尺寸的图片

Libgdx关于载入图片规格的问题 对于libgdx来说,对载入的图片要求是:宽高都必须是2的N次幂的图片才行,否则会提示:texture width and height must be powers of two. 那么,如何使用非2的N次幂尺寸的图片呢,使用以下函数: import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx

最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具

本文记录一个自己写的简单的测试图片生成工具:simplest_pic_gen.该工具可以生成视频测试时候常用的RGB/YUV格式的测试图片.下面简单介绍一下这些测试图片的生成函数.这里有一点需要注意:查看生成的图片需要使用RGB/YUV播放器. 灰阶测试图 亮度取值为16-235的灰阶测试图下面这张图是一张灰阶测试图的示例.这张图的分辨率是1280x720,像素格式是YUV420P,亮度的取值范围是16-235,一共包含了10级的灰度.最左边的灰度竖条的YUV取值为(16,128,128),最右