phpcms v9图片生成缩略图变成黑色解决方法
今天客户反映,上传的图片生成缩略图有的图片变成黑色,
出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码。
打开\phpcms\libs\classes\image.class.php,看了半天也没有看出哪里的错误。
网上有很多关于php png图片压缩变成黑色的问题,我刚开始也以为是这样问题,但是v9的源码里做了这样问题的处理,所以排除这个原因。
突然想到了错误日志,打开\caches\error_log.php 错误日志,发现问题了。
09-05 12:03:43 | 2 | imagecreatefrompng(): '/alidata/www/uploadfile/2016/0719/thumb_506_351_20160704061846270.png' is not a valid PNG file | phpcms/libs/classes/image.class.php | 102
一眼看到这样错误,我就知道什么错误,原因是这张图片后缀是png图片,但实质不是png图片,应该是其他类型图片人为修改为png图片,为了验证这一点,我写了一段代码验证一下,代码如下:
$url="http://www.xxxx.com/uploadfile/2016/0719/thumb_506_351_20160704061846270.png";
print_r(getimagesize($url));
print_r("<br/>");
print_r(pathinfo($url));
输出结果如下:
Array ( [0] => 506 [1] => 351 [2] => 2 [3] => width="506" height="351" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
Array ( [dirname] => http://www.xxxx.com/uploadfile/2016/0719 [basename] => thumb_506_351_20160704061846270.png [extension] => png [filename] => thumb_506_351_20160704061846270 )
大家看到了 mime 和 extension了没有??
再来看一下v9的源码
v9里使用pathinfo来获取图片的后缀,这样导致很多图片是人为修改的后缀图片,在使用imagecreatefrom 函数 (imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng)创建画布的时候选错函数。
解决方法:
注销掉80行:$type = $pathinfo['extension']; 就ok了。
$info['type'] 上面函数已经获取到了图片mime扩展类型。
phpcms v9图片生成缩略图变成黑色解决方法的更多相关文章
- 织梦DEDECMS更换目录后页面内的图片和缩略图无法显示解决方法
http://www.win8f.com/seoyouhua/6609.html 很多人碰到织梦更换目录后内容图片和缩略图无法显示的问题,在此,慧鸿网络特地搜集整理了一篇关于织梦出现缩略图和内容无法显 ...
- java 图片生成缩略图后,转化成流
功能:图片生成缩略图后,转化成流 public class ImageUtils { /** * * @param in1 * 文件流 * @param uploadFileName * 文件名称 * ...
- C# 图片生成缩略图
C# 图片生成缩略图方法: /// <summary> /// 生成缩略图 /// </summary> /// <param name="fileName&q ...
- sublime text 乱码生成.dump问题的解决方法
title: sublime text 乱码生成.dump问题的解决方法 tags: sublime text,sublime text 3,.dump,乱码 grammar_cjkRuby: tru ...
- PHPCMS v9点击量增加值加大的方法
PHPCMS v9点击量增加值加大的方法 在根目录/api 50行 $views = $r['views'] + 1; 修改数字1即可修改每次刷新页面点击量增加的数值.
- ubuntu下Chrome谷歌浏览器部分网站图片显示不正常的解决方法
title: ubuntu下Chrome谷歌浏览器部分网站图片显示不正常的解决方法 toc: false date: 2018-09-02 14:37:26 categories: methods t ...
- WPF图片放大后模糊的解决方法
原文:WPF图片放大后模糊的解决方法 WPF中显示图片的方式很多,可以用Image控件来显示图像,或者直接设置一个控件的Background.图片的放大也很简单,直接设置显示图片的控件的Width和H ...
- 【PHP缩略图类】手机照片不能生成缩略图问题以及解决方式
[本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么.生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行測试,发现仅仅要是手机拍出来的照 ...
- nginx实现本地图片生成缩略图
nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...
随机推荐
- Fragment调用Activity
public void onClick(View arg0) { Intent intent = new Intent(); intent ...
- spring security oauth2.0 实现
oauth应该属于security的一部分.关于oauth的的相关知识可以查看阮一峰的文章:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html ...
- 【转】【51CTO 网+】怎样做一款让用户来电的产品
[51CTO 网+]怎样做一款让用户来电的产品 据相关调查显示,目前全球移动用户平均每人安装应用约95个,每天使用的应用约35个.可见面对众多的移动应用,用户拥有非常大的选择空间.如果由于交互设计欠佳 ...
- 理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- spark1.4.1 启动过程
今天稍微没那么忙了,趁着这个时间,准备把spark的启动过程总结一下(),分享给大家.现在使用的spark1.4.1版本 当然前提是你已经把spark环境搭建好了. 1.我们启动spark的时候一般会 ...
- Fast RCNN 训练自己数据集 (2修改数据读取接口)
Fast RCNN训练自己的数据集 (2修改读写接口) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ http ...
- using 释放资源
我们知道使用C#程序访问数据库资源需要几个步骤:创建连接,打开连接,访问数据库,关闭连接,基本架构如下: SqlConnection conn = new SqlConnection(connStri ...
- Java程序设计之整数分解
题目:题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 解题过程也很简单,下面直接上代码了: import java.util.ArrayList; import java. ...
- 如何用Maven创建web项目
使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing 选择 ...
- EEGLAB数据分析:预处理与后续处理
来源:http://blog.sina.com.cn/s/blog_13171a73d0102v4zx.html 数据预处理主要包括数据导入.电极定位.电极返回.滤波.去除伪迹.重建参考.分段.叠加平 ...