使用404被动生成缩略图

PHP 显示 imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file 这个错误提示意味着你的图片可能不是一个JPEG格式图片,而是PNG或其他格式。因为以0x89 0x50开头的数据被解析为PNG的标识符。函数获取图像文件的元数据信息,包括 MIME 类型。然后根据 MIME 类型调用相应的创建图像函数,例如。,得到一个 PHP 图象资源。当遇到不支持的文件格式时,我们抛出了一个异常。函数时,必须确保图像文件是JPEG格式的。如果你不确定图像文件的格式,可以考虑使用。在上述代码中,我们首先使用。 阅读详情

在我们的项目中,图片是根据模板的不同显示不同的规格,所以无法预先生成缩略图。而图片是存储在专门的图片文件服务器上的,我们要求图片请求除第一次生成之外,访问的是真实的图片文件。主要思路是通过404跳转生成缩略图。具体方法:

1. 图片上传到文件服务器,图片的相对路径保存到相应的数据字段中。


2.模板显示的时候,根据模板要求,生成该图片缩略图的URL,缩略图URL中包含有图片原始地址,缩略图大小,缩略规则,水印规则

	/**
	 * 根据原图名获取缩略图的访问地址,规格段需要进行加密
	 *
	 * @param String $filename 文件名
	 * @param int $width 宽度
	 * @param int $height 高度
	 * @param Char $tyep f:fix,fw:fix width,fh:fix height,c:cut,a:auto,n:原图,不做任何处理,图片生成方式
	 * @param $watermark 水印规则,0表示不加水印
	 * @param String $toJpeg 是否转换为jpg y:转换 n:不转换
	 * @return String 缩略图访问地址
	 */
	public static function getImgUrl($filename,$width=0,$height=0,$type='f',$watermark=0,$toJpeg='n')
	{
		//如果是远程路径,直接返回
		if(strpos($filename,"http://") === 0){
				return $filename;
		}
		$base_img_url = IMG_BASE_URL;
		if($filename == ""){
			return DEFAULT_IMG_URL;
		}
		if($type == 'n'){
			return $base_img_url.$filename;
		}
		$extend = pathinfo($filename);
		$ext    = strtolower($extend["extension"]);
		
		//是否转换为jpg
		if(($ext == 'png') && ($toJpeg == 'y')){
			$format = 'jpg';
		}else{
			$format = $ext;
		}
		//$url = str_replace("images",$base_img_url,$filename);
		$url = $base_img_url.$filename;
		$width = intval($width);
		$height = intval($height);
		if($watermark===0){
			return str_replace(".$ext",'_'.$ext.'_cacheimages'.'_H_'.Util::encrypt_unrand($width.'_'.$height."_$type").".".$format,$url);
		}else{
			return str_replace(".$ext",'_'.$ext.'_cacheimages'.'_H_'.Util::encrypt_unrand($width.'_'.$height."_$type"."_".$watermark).".".$format,$url);
		}
	}

3.浏览器向图片服务器请求缩略图的URL,该URL 对应的图片如果已经生成则正常访问

4.如果该图片不存在,则触发404跳转,跳转到我们设定的缩略图生成文件。这一步需要在web服务中设置,将默认的404文件 改成我们的缩略图生成文件,我的是Apache,

<VirtualHost *>
serverName img.xxx.com
Header set Access-Control-Allow-Origin http://www.xxx.com
DocumentRoot D:/www/xxx/trunk/static/
	<Directory "D:/www/xxx/trunk/static/">
	    Options Indexes FollowSymLinks MultiViews
	    AllowOverride All
	    Order allow,deny
	    Allow from all
	</Directory>
<span style="background-color: rgb(255, 255, 153);">ErrorDocument 404 /imageServer/404.php</span>
</VirtualHost>

5.缩略图生成文件时,先解析URL,得出缩略图的原图和各种规则,然后生成,并保存到URL所指定的地址,然后直接输出缩略图数据,显示在浏览器中。

/**
 * 404错误页面处理图片缩略图生成
 */
include "config.php";
$imgpath = $_SERVER['REDIRECT_URL'] ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI'];
$imgpath = substr($imgpath,1,strlen($imgpath)-1);
$pos = strpos($imgpath,'?');
if($pos !== false){
	$imgpath = substr($imgpath,0,$pos);
}
$imgarr = pathinfo($imgpath);

if(!in_array(trim(strtolower($imgarr['extension'])),array('jpg','jpeg','gif','png','bmp'))){
	exit;
}
$filename = $imgarr['filename'];
$arr = explode("_",$filename);
$arr_len = count($arr);

/** 加密后,解密 **/
$spec = explode("_",decrypt2($arr[$arr_len-1]));
$w = $spec[0];
$h = $spec[1];
if($arr[$arr_len-2] != 'H'){
	$w = ceil($w/2);
	$h = ceil($h/2);
}
$spec['2'] = trim($spec['2']);
$type = in_array($spec['2'],array('a','f','fw','fh','c','tc','cc')) ? $spec['2'] : 'a';
$watermark = isset($spec['3']) ? $spec['3'] : 0;
include "imageResize.func.php";
//获取原图路径
$arr1 = explode("_cacheimages_",$filename);
$src_name = $arr1[0];
if($arr_len == 6){
	$file = IMG_DIR.$imgarr['dirname'].'/'.$arr[0].'_'.$arr[1].'.'.$arr[$arr_len-4];
}else{
	$arr2 = explode("_",$src_name);
	$arr2_len = count($arr2);
	if($arr2_len == 1){
		$file = IMG_DIR.$imgarr['dirname'].'/'.$arr2[0].".".$imgarr['extension'];
	}else{
		$ex = strtolower ($arr2[$arr2_len-1]);
		if($ex == 'png' || $ex == 'jpg' || $ex == 'gif' || $ex == 'bmp'){
			$file = IMG_DIR.$imgarr['dirname'].'/'.$arr2[0].".".$ex;
		}else{
			$file = IMG_DIR.$imgarr['dirname'].'/'.$arr2[0].'_'.$arr2[1].".".$imgarr['extension'];
		}
	}
}

//获取缩略图文件名
//$imgpath = str_replace('.'.$imgarr['extension'],'.'.$arr[$arr_len-3],$imgpath);
$newfile = IMG_DIR.$imgpath;
if(imageResize($file,$newfile,$w,$h,$type)){
	ob_clean();
<span style="color:#ffffff;">	</span><span style="background-color: rgb(255, 255, 153);">header("HTTP/1.1 200 OK");</span><span style="color:#ffffff;">
</span>	header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");
	header("Cache-Control: max-age=315360000");
	header("Content-type: image/jpeg");
	if($watermark==1){
		imageWaterMark($newfile,9,'../images/watermark150.png');
	}elseif($watermark==2){
		imageWaterMark($newfile,9,'../images/watermark200.png');
	}elseif($watermark==3){
		imageWaterMark($newfile,9,'../images/watermark250.png');
	}
	echo file_get_contents($newfile);
}else{
	ob_clean();
	<span style="background-color: rgb(255, 255, 153);">header("HTTP/1.1 200 OK");</span>
	header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");
	header("Cache-Control: max-age=315360000");
	header("Content-type: image/jpeg");
	$newfile = IMG_DIR."images/default.png";
	echo file_get_contents($newfile);
}

function realImage($url,$key = "imgkey"){
    //本地要去除项目目录(autowebsite3g_svn)
    $url = parse_url($url,PHP_URL_PATH);
    if (substr($url, 0, 14) != "/_cache_images") {
        return false;
    } else {
        $url = substr($url, 15);
    }    
    $h = substr($url,0,2);
    $url = substr($url,2);
    $extend = pathinfo($url);
    if($h=='H0'){
    	$real_url = Util::decrypt($extend['filename'],$key);
    	$real_url_info = pathinfo($real_url);
    	$file_info = explode('_', $real_url_info['filename']);
    	$widthandheight_info = explode('x', $file_info[count($file_info)-2]);
    	$new_widthandheight = strval(intval($widthandheight_info[0])/2)."x".strval(intval($widthandheight_info[1])/2);
    	return str_replace($file_info[count($file_info)-2],$new_widthandheight,$real_url);
    }else{
    	return decrypt($extend['filename'],$key);
    }
}
    
    function decrypt2($txt, $key = 'anihc ctI') {
    	if($key == 'ewebsoft'){
    		return $txt;
    	}
    	$txt = str_replace("@","_",$txt);
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
        $ikey = "-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
        $knum = 0;
        $i = 0;
        $tlen = strlen($txt);
        while (isset($key{$i}))
            $knum +=ord($key{$i++});
        $ch1 = $txt{$knum % $tlen};
        $nh1 = strpos($chars, $ch1);
        $txt = substr_replace($txt, '', $knum % $tlen--, 1);
        if(strlen($txt)==0){
        	//TODO错误处理
        	echo '非法参数';exit;
        }
        $ch2 = $txt{$nh1 % $tlen};
        $nh2 = strpos($chars, $ch2);
        $txt = substr_replace($txt, '', $nh1 % $tlen--, 1);
    	if(strlen($txt)==0){
    		//TODO错误处理
        	echo '非法参数';exit;
        }
        $ch3 = $txt{$nh2 % $tlen};
        $nh3 = strpos($chars, $ch3);
        $txt = substr_replace($txt, '', $nh2 % $tlen--, 1);
        $nhnum = $nh1 + $nh2 + $nh3;
        $mdKey = substr(md5(md5(md5($key . $ch1) . $ch2 . $ikey) . $ch3), $nhnum % 8, $knum % 8 + 16);
        $tmp = '';
        $j = 0;
        $k = 0;
        $tlen = strlen($txt);
        $klen = strlen($mdKey);
        for ($i = 0; $i < $tlen; $i++) {
            $k = $k == $klen ? 0 : $k;
            $j = strpos($chars, $txt{$i}) - $nhnum - ord($mdKey{$k++});
            while ($j < 0)
                $j+=64;
            $tmp .= $chars{$j};
        }
        $tmp = str_replace(array('-', '#', '.','@'),array('+', '/', '=','_'),  $tmp);
        return base64_decode($tmp);
    } 
    
    
    /*
* 功能:PHP图片水印 (水印支持图片或文字)
* 参数:
*$groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
*$waterPos水印位置,有10种状态,0为随机位置;
*1为顶端居左,2为顶端居中,3为顶端居右;
*4为中部居左,5为中部居中,6为中部居右;
*7为底端居左,8为底端居中,9为底端居右;
*$waterImage图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
*$waterText文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
*$textFont文字大小,值为1、2、3、4或5,默认为5;
*$textColor文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
*
* 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG
*$waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
*当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
*加水印后的图片的文件名和 $groundImage 一样。
* 作者:longware @ 2004-11-3 14:15:13
*/

function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=5,$textColor="#FF0000"){
    $isWaterImage = FALSE;
    $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";
    //读取水印文件
    if(!empty($waterImage) && file_exists($waterImage)){
        $isWaterImage = TRUE;
        $water_info = getimagesize($waterImage);
        $water_w = $water_info[0];//取得水印图片的宽
        $water_h = $water_info[1];//取得水印图片的高 
        switch($water_info[2]){//取得水印图片的格式
            case 1:$water_im = imagecreatefromgif($waterImage);break;
            case 2:$water_im = imagecreatefromjpeg($waterImage);break;
            case 3:$water_im = imagecreatefrompng($waterImage);break;
            default:die($formatMsg);
        }
    }
    //读取背景图片
    if(!empty($groundImage) && file_exists($groundImage)){
        $ground_info = getimagesize($groundImage);
        $ground_w = $ground_info[0];//取得背景图片的宽
        $ground_h = $ground_info[1];//取得背景图片的高
        switch($ground_info[2])//取得背景图片的格式
        {
            case 1:$ground_im = imagecreatefromgif($groundImage);break;
            case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
            case 3:$ground_im = imagecreatefrompng($groundImage);break;
            default:die($formatMsg);
        }
    }else{
        die("需要加水印的图片不存在!");
    }
    //水印位置
    if($isWaterImage)//图片水印
    {
        $w = $water_w;
        $h = $water_h;
        $label = "图片的";
    }else{//文字水印
        $temp = imagettfbbox(ceil($textFont*5),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围
        $w = $temp[2] - $temp[6];
        $h = $temp[3] - $temp[7];
        unset($temp);
        $label = "文字区域";
    }
    if( ($ground_w<$w) || ($ground_h<$h) ){
        echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!";
        return;
    }
    switch($waterPos){
        case 0://随机
            $posX = rand(0,($ground_w - $w));
            $posY = rand(0,($ground_h - $h));
            break;
        case 1://1为顶端居左
            $posX = 0;
            $posY = 0;
            break;
        case 2://2为顶端居中
            $posX = ($ground_w - $w) / 2;
            $posY = 0;
            break;
        case 3://3为顶端居右
            $posX = $ground_w - $w;
            $posY = 0;
            break;
        case 4://4为中部居左
            $posX = 0;
            $posY = ($ground_h - $h) / 2;
            break;
        case 5://5为中部居中
            $posX = ($ground_w - $w) / 2;
            $posY = ($ground_h - $h) / 2;
            break;
        case 6://6为中部居右
            $posX = $ground_w - $w;
            $posY = ($ground_h - $h) / 2;
            break;
        case 7://7为底端居左
            $posX = 0;
            $posY = $ground_h - $h;
            break;
        case 8://8为底端居中
            $posX = ($ground_w - $w) / 2;
            $posY = $ground_h - $h;
            break;
        case 9://9为底端居右
            $posX = $ground_w - $w - 10;   // -10 是距离右侧10px 可以自己调节
            $posY = $ground_h - $h - 0;   // -10 是距离底部10px 可以自己调节
            break;
        default://随机
            $posX = rand(0,($ground_w - $w));
            $posY = rand(0,($ground_h - $h));
            break;
    }
    //设定图像的混色模式
    imagealphablending($ground_im, true);
    if($isWaterImage){//图片水印
        imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件 
    }else{//文字水印
        if( !emptyempty($textColor) && (strlen($textColor)==7) ){
            $R = hexdec(substr($textColor,1,2));
            $G = hexdec(substr($textColor,3,2));
            $B = hexdec(substr($textColor,5));
        }else{
            die("水印文字颜色格式不正确!");
        }
        imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B)); 
    }
    //生成水印后的图片
    @unlink($groundImage);
    switch($ground_info[2]){//取得背景图片的格式
        case 1:imagegif($ground_im,$groundImage);break;
        case 2:imagejpeg($ground_im,$groundImage);break;
        case 3:imagepng($ground_im,$groundImage);break;
        default:die($errorMsg);
    }
    //释放内存
    if(isset($water_info)) unset($water_info);
    if(isset($water_im)) imagedestroy($water_im);
    unset($ground_info);
    imagedestroy($ground_im);
}
    
注意上面高亮的部分,这是将返回状态从404改回到200。否则在第一次生成的时候,浏览器发现状态是404就不显示图片了。
使用WPCLI重新生成WordPress网站缩略图 本文介绍了使用WP-CLI重新生成WordPress网站缩略图的方法。主要内容包括:1. 更换主题后旧缩略图占用空间的问题;2. WP-CLI相比插件的优势(全面处理图片、删除旧缩略图、速度快);3. 使用前的准备工作(备份网站、获取Linux权限);4. WP-CLI的具体安装步骤;5. 执行缩略图重生的命令流程;6. 解决可能出现的图片404错误(使用ReplaceContentImageSize插件)。文章强调操作前必须备份,并提供了完整的命令行操作指南。 阅读详情

相关推荐

如何生成图片缩略图

asp.net做的生成图片缩略图

前端解决图片404的问题

目前在做信息流列表的时候,需要点击不同的图片跳转不同的地址, 主要就是图片404的捕捉和替换备用图片 1.目前在用的,使用的是全集的错误捕捉 const basesrc = 'http://static.51gzdhh.xyz/2020-05-15/2/23da5ac3420d1f4b87790d0b91c690d1.jpg' window.addEventListener('error', function(e) { if (e.target.tagName === 'IMG

qq_36893984的博客 4261

WVP-GB28181-Pro配置避坑指南:从零到上线全流程详解(含ZLM自动同步技巧)

本文详细解析了WVP-GB28181-Pro视频平台的配置流程,特别针对国标视频平台部署中的常见陷阱,如stream-ip/sdp-ip配置错误、ZLM自动同步问题及端口冲突等,提供了实用的解决方案和优化建议,帮助开发者快速实现从零到上线的全流程部署。

weixin_30836759的博客 93

nginx+lua实现实时缩略图功能思路

一、概述 网站的访问速率一直是非常重要的用户体验指标,近期对公司一个重点项目的性能进行优化时遇到了网站图片过大的问题,系统架构设计的实现的过程当中未对图片等静态资源的优化进行重点考虑,线上运行2年多,有大量的存量数据需要进行处理。 二、实现 1、直接修改业务逻辑代码,首先对图片上传的尺寸进行限制,如图片的体积、尺寸等。其次在上传的同时生成不同尺寸的图片,如手机和PC等页面采用...

八戒仍需悟空 437

教程 | VeriStand硬件在环仿真测试第一章

这篇是系列文章的第一章,满满的都是干货,感兴趣的话欢迎一起交流探讨。

HUASUITECH的博客 1万+

baostock实战:如何用Python批量下载多只股票的历史数据(含常见错误排查)

本文详细介绍了如何使用Python和baostock库批量下载多只股票的历史数据。内容涵盖从环境搭建、代码标准化到构建稳健的批量下载框架的全过程,并重点提供了高级错误处理、网络重试、数据验证及内存管理等实战解决方案,帮助用户高效构建股票数据处理流水线。

nice1的博客 1082

【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!

在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)如何准备面试?1、前期铺垫(技术沉积)程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。

2401_84006757的博客 878

用R搞定生态溯源:MixSIAR贝叶斯混合模型从安装到出图的保姆级教程

本文提供了一份详细的MixSIAR贝叶斯混合模型教程,涵盖从R环境配置、数据预处理到模型参数设置和可视化分析的完整流程。通过实战案例和常见问题解决方案,帮助生态学研究者快速掌握混合模型在生态溯源中的应用,提升数据分析效率。

weixin_42531516的博客 467

1. Nginx如何生成缩略图

Author:Young Date:2020-07-19 参考链接: 运维生存时间,脉脉 1. Nginx如何生成缩略图 生成缩略图方案 为了手机端浏览到与手机分辨率相匹配的图片,提高 APP 访问速度以及减少用户的手机流量,需要将图片生成缩略图,这边共有以下解决方案。 A.发布新闻生成多重缩略图 – 无法匹配到各种尺寸图片 B.当相应缩略图不存在,则使用 PHP 或者 Java 等程序生成相应缩略图 – 需要程序员协助 C.使用 Nginx 自带模块生成缩略图 – 运维即可完成 D.使用 Nginx+L

kemoyou的博客 654

告别龟速下载!保姆级教程:用离线包5分钟搞定Arduino IDE的STM32开发环境(附最新库文件)

本文提供了一套完整的Arduino IDE离线配置方案,帮助开发者5分钟快速搭建STM32开发环境。通过详细的板支持包安装指南、文件校验方法和常见问题解决方案,彻底解决GitHub下载慢的问题,提升开发效率。

weixin_26802933的博客 366

传感器应用案例:压力传感器在工业自动化中的应用_(13).压力传感器的数据采集与处理

数据采集系统(Data Acquisition System, DAS)是连接传感器和控制系统的重要桥梁。它包括硬件(如数据采集卡、信号调理器)和软件(如数据采集软件、数据处理算法)两部分。信号调理:将传感器输出的模拟信号转换为适合AD转换的信号。AD转换:将模拟信号转换为数字信号。数据传输:将数字信号传输到控制系统或上位机。存储:将采集的数据存储在本地或远程数据库中。实时性:保证数据的实时性和准确性。压力传感器的数据采集与处理是工业自动化中不可或缺的一部分。

2401_87715305的博客 1621

《Nginx核心技术》第04章:生成缩略图

用最简短的篇幅介绍Nginx最核心的知识,重点掌握Nginx如何生成缩略图,并能够灵活运用到实际项目中,维护高可用系统。

冰河的专栏 1380

高通Camx功能feature分析之十:高通NCS服务之注册和启动

本文介绍了高通NCS(非相机传感器)服务的注册与启动流程。NCS通过QMI接口访问陀螺仪等传感器,为相机EIS/AEC等功能提供辅助数据。文章详细解析了服务注册时的QueryCapabilites能力查询、RegisterService注册流程,以及通过StartNCSService启动服务线程的过程。重点包括:1)AF/EIS等节点通过NCSService创建传感器对象;2)注册时需校验传感器类型和接口;3)首次注册成功后会启动NCS服务线程;4)采样率变化时需重新配置会话。通过线程池管理实现传感器数据的

1262

Nginx之——生成缩略图配置

转载请注明出处:https://blog.youkuaiyun.com/l1028386804/article/details/80114630为了手机端浏览到与手机分辨率相匹配的图片,提高 app 访问速度以及减少用户的手机流量,需要将图片生成缩略图,这边共有以下解决方案。A.发布新闻生成多重缩略图 – 无法匹配到各种尺寸图片B.当相应缩略图不存在,则使用 php 或者 java 等程序生成相应缩略图 – ...

冰河的专栏 3616

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。英伟达™(NVIDIA®)JetPack SDK。

机器人控制与仿真应用 3876

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

thinkphp3.2.3+uploadify3.2.1 上传图片并生成缩略图 404错误

上传图片的时候用uploadify插件,原图上传成功,缩略图没有,提示404, 网上搜到要改插件源码,改了也没用,搞了一天,最后发现是上传之后$info中数据读取出错了 一开始是用2维数组的方式读取数据,在没用uploadify插件,只用tp文档里上传图片的方法,是可以上传成功的,但加了插件后就会提示404错误,原图可以上传成功,但缩略图都没有。把$info的数据用下面的方法读取就成功了

不努力的猪的博客 794

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Nginx】面试官竟然问我Nginx如何生成缩略图

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。[外链图片转存中…(img-ikFmEvfk-1711476386902)]点击传送门,即可免费领取!

2401_83703893的博客 481

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

FastDFS结合Nginx Image 模块使用缩略图

1,安装nginx缩略图模块:点击查看 2,安装FastDFS图片服务器:点击查看 3,配置nginx访问静态资源FastDFS资源 server { listen 81; #配置图片缩略图,匹配图片后缀 location ~* /group1/M00/.*\.(gif|jpg|jpeg|png)$ { root ...

H的博客 7060

获取和更新thumbshots网站缩略图的方法

老手站长对thumbshots.org这个站肯定不陌生,它为无数seo查询工具网站提供了缩略图,最知名的chinaz也是用的thumbshots提供的接口生成的缩略图。当你使用seo.chinaz.com来查询网站seo情况,就会发现右侧的小缩略图,这就是thumbshots提供的缩略图服务。可以说,thumbshots是一个很权威的网站缩略图服务。如果在建站初期,这个缩略图对站长的意义也更大一些

787

利用thinkphp5.1的路由创建动态缩略图

我们在做图片上传的时候一般都会生成一张缩略图,这样做的好处是在客户端拉取图片的时候可以更快速的拉取图片数据,并且可以减少服务器的带宽请求。 传统的做法是在上传的时候生成一张缩略图,但是这样做有两个缺点。1、图片占用服务器空间;2、图片大小不能随意更改。 所以这个时候就需要一个动态修改缩略图的方案。下面我介绍下利用thinkphp5.1的的路由创建一个动态缩略图方法。 1、修改图片处理类 由于t...

qybest的博客 624

利用Graviton2和CloudFront为S3对象存储动态生成缩略图

作为开发人员,经常要提供各种尺寸的图像,以确保不同屏幕尺寸和分辨率的设备都有出色的访问体验。这样对于图片的管理就会变得非常复杂。存储在S3上的图片经常会被处理成各种尺寸,以适应网站和APP。

亚马逊云科技专栏 1441

java实现office办公软件(word、pdf、excel、ppt) 及 视频文件 生成缩略图

【代码】java实现office办公软件(word、pdf、excel、ppt) 及 视频文件 生成缩略图。

notfound4043的博客 786
上一篇: css加载字体的跨域问题
下一篇: php页面静态化实现思路
颓废的老猫
博客等级 码龄25年 23粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值