本文出自 “技术成就梦想” 博客,请务必保留此出处http://flyfishes.blog.51cto.com/3527694/819693
一个码农的自留地
本文出自 “技术成就梦想” 博客,请务必保留此出处http://flyfishes.blog.51cto.com/3527694/819693
最近发现发送到微信公众平台的图片被旋转了90度,导致后续操作出错。后来仔细研究,发现用iphone前置摄像头拍出来的照片会自动镜像,而且会右旋90度,之前TX服务器会处理这种情况,貌似最近不干了,害客户抱怨我这里的问题。
然后开始研究服务器传回来照片的格式,发现exif里面Orientation的值为6,正好是右旋了90度,正好可以根据这个来自动调整图片。
首先读取exif值
$exif = exif_read_data($src, 0, true);
if($exif[‘IFD0’][‘Orientation’]==6){
flip($src,$src,-90);
}
其实还有其他方向,也可以根据这个来旋转,我这里只需要这么多。
另外附上flip方法
function flip($filename,$src,$degrees=90)
{
//读取图片
$data = @getimagesize($filename);
if($data==false)return false;
//读取旧图片
switch ($data[2]) {
case 1:
$src_f = imagecreatefromgif($filename);break;
case 2:
$src_f = imagecreatefromjpeg($filename);break;
case 3:
$src_f = imagecreatefrompng($filename);break;
}
if($src_f==””)return false;
$rotate = @imagerotate($src_f, $degrees,0);
if(!imagejpeg($rotate,$src,100))return false;
@imagedestroy($rotate);
return true;
}
万一你机器上面没有exif模块,参照我前一篇博文。
今天在php程序中要使用exif信息,发现服务器的php居然没有编译这个模块,网上找了个教程,在这里做个笔记,省得以后忘了。
cd [php-source-dir]/ext/exif/ export PHP_PREFIX=”[your php install full path]” $PHP_PREFIX/bin/phpize ./configure –enable-exif=shared –with-php-config=$PHP_PREFIX/bin/php-config make make install 配置php.ini 重起nginx |
第一章 罗兰传
罗兰兄“非死不可”曰:曾经的全球最大电信运营商——中国电信工程师、当前的IT企业管理者,留过欧下过洋、品过红酒醉过清酒、漂过塞纳躺过富士,现流落美国。生活中的我:不太帅但很可爱、不太高但很对菜。
罗兰兄厨艺颇佳。
二少、三爷、四爷同至春田,本以为罗兰兄能在吾等三人之前打点好,谁知其偷懒赖在芝城,做隐身态。吾等无奈,联系师兄在一猪圈寄宿一晚,翌日搬至如今LM居。 为犒劳三爷四爷辛苦劳作搬家具,二少承担烹饪之职,三爷四爷享受几日二少悉心照料。
不日,罗兰兄携包至LM居,吼,吾至,速接驾!掏出若干牛肉干,收买人心,转瞬消失在自己房中,翻箱倒柜,不知所终。后从一师姐处购买锅碗瓢盆桌椅,曰,此乃宝贝,吾赚大也!
夕,罗兰牛刀小试,厨艺高于二少,从此LM居之饮食、采购均由罗兰负责。
罗兰用料极省,凡骨肉必须分离,肉炒,骨炖汤。二少三爷炒肉之际,每每提醒,肉多,需省。罗兰系广府人,煲汤煲粥乃家常之菜,汤汁美味令吾等欣喜不已。后因吾等拷贝其作品,甚有超过罗兰之势,遂罗兰罢做汤粥,非友人到访之际不做,非逢年过节不做。
凡蔬菜水果均可烧汤,有西瓜三吃之法,囊生吃,内层皮炒菜,外层青皮炖汤,一时传为美谈。每每食瓜毕,吼,瓜皮勿仍,可食。无奈,内层皮为吾LM居保留菜系,在米国友人诞辰之日,中米朋友均有幸品尝三爷之瓜皮肉片。对于青皮,三爷无语,留与罗兰处理。
罗兰创苹果核瓜皮汤。一夜,与二少三爷四爷散步,见一苹果树,盗若干,曰,吾可炒苹果与尔等食用。翌日,吾等同窗至LM居,炒苹果、核皮汤伺候。同窗挑起一核,曰,此何物?罗兰答,猜!同窗研究许久,曰,似苹果核,然否?答,高!遂将核、皮捞出,盘中无一物,实清汤也,味鲜美,但因口味外观独特,无人提起,成为罗兰千古绝唱。后盗若干沙果,罗兰欲重操旧业,吾等速生食沙果,遂罗重操之望破灭。
另因喜食盐味,善做卤汤。卤汤者,酱油也,入小锅煮,鸡胗、猪肉、牛肚、生菜心均可入汤,加盐鸡精,武火煮沸,文火煎熬。一日,四爷弃剩余卤汤,罗兰怒骂,此汤乃宝,可重用,知否?罗兰对卤汤不离不弃,食毕,必小心包好,放入冰箱保存,次日加入新料重新熬煮,直至泛白长菇,叨,实可食也,不忍弃,后倒入茅厕,感慨不已,由奢入俭易,由俭入奢难。
罗兰兄喜吃,素有食物粉碎机之称,凡见桌上之菜,执筷如飞,盘中碗中之物统统扫光。尤食面之际,声音大作,面已无踪影。三更,时常念叨,三爷,夜宵何在?三爷善做蛋,做蛋之际,罗兰兄便立于一旁,垂涎三尺。三爷无心夜宵之时,速食面冰激凌水果一扫而空。唯四爷亦好速食面,常听二人厨房烧水泡面,卿卿我我,郎情妾意,恩爱如漆。
罗兰兄喜午睡,准备午饭之时,速,吾欲睡!风卷残云,便挺尸于床上,鼾声如雷,得睡神之名。午时二刻,醒,曰,睡毕,学习之,遂与四爷一同图书馆中苦练葵花宝典,必得11B,立争11A。此刻周公正传授二少三爷梦中武林绝学与罗兰四爷抗衡。
罗兰兄性情敦实,至M大后,绯闻不断,男女通吃,老少不限。传一七岁女童对罗兰仰慕之至,竞相献吻,得水果叔叔美名。传凡见花甲老太,必得拥抱,又得尊老之名。后又传临幸小四,无果。据传对F下手太晚,唏嘘不已。另传经三爷介绍,又转对L心存爱慕,但因与三爷赌气,时时不肯出手,暂无果,只待缘分。
罗兰名之来历,说来话长,因喜在沐浴之后裸奔,且经常将红内挂于房内与大家观赏,由二少赐予“裸男”之名,后谐音罗兰,增添一丝罗曼蒂克之意,也期待罗兰兄能够少许罗曼蒂克,早日陷入情网。
终结,待毕业之际,赠与罗兰兄缅怀LM居点点滴滴。
序
LM居者,盖因国内L大四位高人在米国M大研习西洋奇计,命府邸为LM居。LM者,与某一网络用语接近,诸位均可随意想象发挥。LM居四大高人,由厨艺排名,罗兰居首,依次二少,三爷,四爷。
本传主角罗兰,二少,三爷,四爷,此外,将有11,HH等角色登场,情节纯属虚构,请勿自我套用。
罗兰兄,姓X名XX,字Michael,号罗兰,另号(你)大爷,广东汕头人士,目前单身,芳龄3x,待字闺中。之前在广东某电信公司任VP职位,就读于春田M大。必杀技–你大爷。喜吃,喜睡,性情敦厚,表面不擅言辞,但内心火热,钻石王老五类型。对罗兰兄有意之女性,请先与四爷联系,然后由三爷把关,最后由二少定夺是否能够喜结连理,四爷米国的联系电话是911,中国的联系方式是110,其他国家女性暂不接待。
二少,人称霸王花,经考察亦是路霸,诸位有车人士如遇二少,体谅安危请务必回避,必杀技–貌美如花夺命三声笑。善闹腾,自L大到M大,目前在G国,不曾消停,喜唆使别人做出惊天地泣鬼神之事。
三爷,已昏,虽年长于二少,厨艺不如,屈居第三,善现代算盘。喜给罗兰张罗终身大事。曾因中秋佳节二少唆使之下出演某一颠覆形象,被罗兰戏弄,调侃至今。幸万圣节之夜,罗兰亦有出格之事,不再取笑三爷。
四爷,人称小四、江湖小虾米,入M大之前,除炒蛋之外只会炒蛋,名副其实炒蛋王子小四是也,自称四爷,时时欲篡三爷之位,毕生之愿是出书立传《小四泡妞记》,因迟迟不敢出手,自然无法得手,呜呼哀哉。在大爷和三爷调教之下,目前已经由炒蛋升级至炒肉了。另外兼职给大爷接听女性朋友电话。
11者,凡面先生必睡,考试之时却顺利过关,果天才也。另身怀绝技,从白发苍苍返老还童。遗传母基因,善会计。善川菜。粉丝团无数。后因陷入情网,不能自拔,几乎消失于江湖。
HH者,亦神人也,将稀疏平常之事说的惊天地泣鬼神,山伯和英台听到11的爱情故事也要羡慕不已。因思夫人,邀至美国,夫人归,不料留下一顽童,HH手忙脚乱,从此退出江湖。
13Y者,盖因礼帽出场,似某戏中花旦,因此得名。
其他众人,此处暂且不表。
待续。
看到网上说树莓派支持1080P视频的播放,专门下载了片子尝试,经常卡死。后来看到说超频后效果好一些。在xbian里面试验了一下,效果没有太大改善。
难道是硬盘原因?这个移动硬盘比较老,大概是5400转的。我通过网络尝试访问Pi,共享拷贝文件,居然只有20多k的速度,换了个比较新的硬盘,速度也没有改善多少,大概40多K,看样子不是硬盘的问题。
难道是usb hub的原因?这个hub比较老,难道是usb 1.0或者1.1的?在网上搜了一下,线材及usb hub本身原因,严重影响移动硬盘速度,甚至会损坏硬盘,所以不建议将硬盘接在hub上。将移动硬盘连直接接到Pi上,网络拷贝速度已经可以达到2.8M,虽然和电脑之间拷贝的20多M速度相比还很慢,已经算是可以接受了。用xbmc开始播放硬盘的1080P电影,果然不卡了,yeah!
总结,硬盘、摄像头之类的设备最好直接接在Pi上,鼠标键盘可以通过usb hub扩展,否则严重影响速度和效率。至于要不要超频,反而影响不是很大。
DO NOT use USB HUB to extend you movable disk or camera, it will slow down your read speed even you can not use it.
在一个小项目里需要用到php的图像处理功能,才发现php通过imagefilter能够实现强大的功能。
(PHP 5)
imagefilter — Applies a filter to an image
$image
, int $filtertype
[, int $arg1
[, int $arg2
[, int $arg3
[, int $arg4
]]]] )imagefilter() applies the given filter filtertype
on the image
.
image
filtertype
filtertype
can be one of the following:
IMG_FILTER_NEGATE
: Reverses all colors of the image.IMG_FILTER_GRAYSCALE
: Converts the image into grayscale.IMG_FILTER_BRIGHTNESS
: Changes the brightness of the image. Use arg1
to set the level of brightness.IMG_FILTER_CONTRAST
: Changes the contrast of the image. Use arg1
to set the level of contrast.IMG_FILTER_COLORIZE
: Like IMG_FILTER_GRAYSCALE
, except you can specify the color. Use arg1
, arg2
andarg3
in the form of red
, green
, blue
and arg4
for the alpha
channel. The range for each color is 0 to 255.IMG_FILTER_EDGEDETECT
: Uses edge detection to highlight the edges in the image.IMG_FILTER_EMBOSS
: Embosses the image.IMG_FILTER_GAUSSIAN_BLUR
: Blurs the image using the Gaussian method.IMG_FILTER_SELECTIVE_BLUR
: Blurs the image.IMG_FILTER_MEAN_REMOVAL
: Uses mean removal to achieve a “sketchy” effect.IMG_FILTER_SMOOTH
: Makes the image smoother. Use arg1
to set the level of smoothness.IMG_FILTER_PIXELATE
: Applies pixelation effect to the image, use arg1
to set the block size and arg2
to set the pixelation effect mode.arg1
IMG_FILTER_BRIGHTNESS
: Brightness level.IMG_FILTER_CONTRAST
: Contrast level.IMG_FILTER_COLORIZE
: Value of red component.IMG_FILTER_SMOOTH
: Smoothness level.IMG_FILTER_PIXELATE
: Block size in pixels.arg2
IMG_FILTER_COLORIZE
: Value of green component.IMG_FILTER_PIXELATE
: Whether to use advanced pixelation effect or not (defaults to FALSE
).arg3
IMG_FILTER_COLORIZE
: Value of blue component.arg4
IMG_FILTER_COLORIZE
: Alpha channel, A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.Returns TRUE
on success or FALSE
on failure.
我用到的几个功能
imagefilter($dst_r, IMG_FILTER_BRIGHTNESS, -80);
The documentation misses the exact meaning and valid ranges of the arguments for ImageFilter(). According to the 5.2.0 sources the arguments are:
IMG_FILTER_BRIGHTNESS
-255 = min brightness, 0 = no change, +255 = max brightness
IMG_FILTER_CONTRAST
-100 = max contrast, 0 = no change, +100 = min contrast (note the direction!)
IMG_FILTER_COLORIZE
Adds (subtracts) specified RGB values to each pixel. The valid range for each color is -255…+255, not 0…255. The correct order is red, green, blue.
-255 = min, 0 = no change, +255 = max
This has not much to do with IMG_FILTER_GRAYSCALE.
IMG_FILTER_SMOOTH
Applies a 9-cell convolution matrix where center pixel has the weight arg1 and others weight of 1.0. The result is normalized by dividing the sum with arg1 + 8.0 (sum of the matrix).
any float is accepted, large value (in practice: 2048 or more) = no change
ImageFilter seem to return false if the argument(s) are out of range for the chosen filter.
You must add imagesavealpha($im, true);
so the alpha channel will be saved on the new image.
$im = imagecreatefrompng('image.png');
imagealphablending($im, false);
imagesavealpha($im, true);
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0,0,255,0)) {
imagepng($im, 'image-new.png');
imagedestroy($im);
}
在mysql5.1创建function时,总是报下面的错误
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 4
检查很多遍都没发现语法错误,苦恼很久。
后上网查到,是因为mysql分隔符的问题,默认是以;作为分隔符,而function或者procedure里面很多时候都要用分号,所以造成这个问题。
解决方法是用DELIMITER //预先定义分隔符,这样就解决了这个问题。存档以防将来之需。
如下是创建随机字符串的function
DELIMITER //
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;
DECLARE return_str varchar(255) DEFAULT ”;
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END; //
Php运行的时候,提示下列错误
PHP Deprecated: Comments starting with ‘#’ are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
后google解决,纯记录。
#注释已经去掉,换成分号就可以了
find /etc/php5/cli/conf.d/ -name “*.ini” -exec sed -i -re ‘s/^(\s*)#(.*)/\1;\2/g’ {} \;
得林茂之书并诗(明·冒愈昌)
五言律诗 押鱼韵
不谓三年别,能来一纸书。开缄如见汝,读罢转愁予。
淮水月常在,秋风柳易疏。更怜诗句好,吟望意何如。
群里有新人加入,10多年没见,见语如见人。
在信件还是主要沟通工具的时候,见字如晤是最常见的问候语,简单一句话,拉近了两个人之间的时间和空间距离。
当年我也是从写信开始的。从每月一封,到每周一封,甚至每周两封。
电话、网络的普及,方便了联系,同时也拉开了人之间的距离。科技的出现给人类带来了进步,也让人变得更加寂寞。
像愈昌一样,三年得到友人一笺,应该是悲喜交加吧。
总有一天,会有一个人,看你写过的所有状态,读完写的所有微博,看你从小到大的所有照片,甚至去别的地方寻找关于你的信息,试着听你听的歌,走你走过的地方,看你喜欢看的书,品尝你总是大呼好吃的东西……只是想弥补上,他迟到的时光。
前段时间,让整个互联网都震动的heart bleeding漏洞,一下子所有https加密网站都受到影响。
因为我的加密网站用的不多,所以没管它,今天想起来就来补这个漏洞了。
下载openssl包,编译,安装就可以了。
但是编译过程中出现了点问题,上网找了很久,用下面的方法就可以了
./config
make clean
make zlib
make
make install
然后which openssl
openssl version -a
看看最后的时间是不是2014年4月7号或者8号,如果是之前的版本就不对了。
通过这两个网址可以检测。
https://lastpass.com/heartbleed/ <!–貌似这个内容更多。
https://filippo.io/Heartbleed/ <!–这个好像被墙了。
即使已经多年没有送,心中的玫瑰还是只属于你。
java 时间戳和PHP时间戳 的转换
原文地址:http://www.myexception.cn/php/1032678.html
总结一下java 时间戳和PHP时间戳 的转换问题:
由于精度不同,导致长度不一致,直接转换错误。
JAVA时间戳长度是13位,如:1294890876859
PHP时间戳长度是10位, 如:1294890859
主要最后三位的不同,JAVA时间戳在PHP中使用,去掉后三位,如:1294890876859-> 1294890876 结果:2011-01-13 11:54:36
echo date(‘Y-m-d H:i:s’,’1294890876′);
PHP时间戳在JAVA中使用,最后加三位,用000补充,如:1294890859->1294890859000
结果:2011-01-13 11:54:19
SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String dateTime = df.format(1294890859000L);
System.out.println(df);