java 生成缩略图并返回字节数组_关于提取后台图片数据时自动生成缩略图程序...
调用图片的页面:
require_once('thumbs.php');//调用缩略图的类文件
//3 手机推荐
$nestedRows= $Download->getDownotherList("0",
"2","(RECMDLEVEL='4' or RECMDLEVEL='5')AND SMALLPICSERVERNAME!=''
AND CATALOGID=DOWNLOAD_NODEID and FULLNODEID like
'%191%'","DOWNLOADID DESC");
$i = 0;
if(is_array($nestedRows)&&sizeof($nestedRows)>0)
{
foreach($nestedRows
as $rowmobiletj)
{
$tbxdownId = $rowmobiletj['DOWNLOADID'];
$HtmlUrl = $rowmobiletj['HTMLURL'];
$tbxdownTitles = $rowmobiletj['DOWNLOADTITLE'];
$tbxdownImages =
$rowmobiletj['SMALLPICSERVERNAME'];
$tbxaddtime = $rowmobiletj['ADDTIME'];
$tbxdownTitle = $Func->ShortWrite($tbxdownTitles,16);
$table["rowmobiletj"][$i]["tbxdownTitle"] = "
title='".$tbxdownTitles."'
target='_blank'>".$tbxdownTitle."
";
$table["rowmobiletj"][$i]["HtmlUrl"] = $HtmlUrl;
$table["rowmobiletj"][$i]["tbxdownTitles"] = $tbxdownTitles;
$srcFile =
"attach/download_smallpic/".date('Y',$tbxaddtime)."/".date('m',$tbxaddtime)."/".date('d',$tbxaddtime)."/".$tbxdownImages;
$image = explode('.',$tbxdownImages);
$dstFile
=
"attach/tmp/thumbs6_2_".$image[0].".jpg";//缩略图名称存放的位置
if(!file_exists($dstFile)){
makeThumb($srcFile,
$dstFile, "100px", "70px", $option=OP_TO_FILE,
$cutmode=CM_MIDDLE);//生成缩略图的方法
}
$table["rowmobiletj"][$i]["tbxUrl"] = $dstFile;
$i++;
}//end
foreach
}
?>
//引用的类'thumbs.php'
/**
* 可扩展的缩略图生成函数
* 在http://yodoo.com的论坛里可以获得最新版本(注册用户)
* 演示效果也请登录http://yodoo.com看看,该站所有的缩略图(jpg,png)都是使用该函数生成的
*
* 转载请保留完整信息
*
* @author Austin Chin http://yodoo.com
* @version $Revision: 1.7 $
*
*
* version
*
* + 表示增加的功能
* - 表示丢弃的功能
* C 表示修正的功能
* E 表示扩展了功能
*
* v1.5
* makeThumb($srcFile, $dstFile, $dstW, $dstH, $option=1)
*
* v1.6
* + 增加了剪切模式
* + $option 8: 宽度最佳缩放
* + $option 16: 高度最佳缩放
* makeThumb($srcFile, $dstFile, $dstW, $dstH, $option=1,
$cutmode=0, $startX=0,
* $startY=0)
*
* v1.7
* E 返回值改为数组,第一个元素是代码 0 表示正常,
其它位错误代码;第二个元素是错误描述。
* 错误代码:
* -1 源文件不存在。
* -2 不支持的图片输出函数
* -3 不支持的图片创建函数
* -4 HTTP头信息已经输出,无法向浏览器输出图片。
* -5 无法检测输出的图片类型
* + 增加函数 message2Image 可以把字符串输出成图片格式
*/
/**
* 可扩展的缩略图生成函数
*
* @param string $srcFile 源文件
* @param string $srcFile 目标文件
* @param int $dstW 目标图片的宽度(单位:像素)
* @param int $dstH 目标图片的高度(单位:像素)
* @param int $option 附加参数,可以相加使用,如1+2(或者
1|2)表示同时执行1和2的功能。
* 1: 默认,输出到指定文件 2: 图片内容输出到浏览器 4:
不保持图片比例
* 8:宽度最佳缩放 16:高度最佳缩放
* @param int $cutmode 剪切模式 0: 默认模式,剪切模式 1: 左或上
2: 中 3: 右或下
* @param int $startX 剪切的起始横坐标(像素)
* @param int $startY 剪切的起始纵坐标(像素)
* @return array return[0]=0: 正常; return[0] 为错误代码
return[1] string: 错误描述
*/
define(OP_TO_FILE,
1); //输出到指定文件
define(OP_OUTPUT,
2); //图片内容输出到浏览器
define(OP_NOT_KEEP_SCALE,
4); //不保持图片比例, 即使用拉伸
define(OP_BEST_RESIZE_WIDTH,
8); //宽度最佳缩放
define(OP_BEST_RESIZE_HEIGHT, 16); //高度最佳缩放
define(CM_DEFAULT, 0); // 默认模式
define(CM_LEFT_OR_TOP, 1); // 左或上
define(CM_MIDDLE, 2); // 中
define(CM_RIGHT_OR_BOTTOM, 3); // 右或下
$srcFile = $_GET['picurl'];
$id =
intval($_GET['id']);
$dstFile = "test.gif";
switch ($id) {
case
1:
makeThumb($srcFile, $dstFile, "86px", "63px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//flash、动漫推荐
break;
case
2:
makeThumb($srcFile, $dstFile, "90px", "70px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//桌面主题
case
3:
makeThumb($srcFile, $dstFile, "132px", "94px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//游戏推荐
break;
case
4:
makeThumb($srcFile, $dstFile, "137px", "96px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//今日推荐
case
5:
makeThumb($srcFile, $dstFile, "100px", "140px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//手机主题
break;
case
6:
makeThumb($srcFile, $dstFile, "100px", "70px", $option=OP_OUTPUT,
$cutmode=CM_MIDDLE);//java游戏
break;
}
function makeThumb($srcFile, $dstFile, $dstW, $dstH,
$option=OP_TO_FILE, $cutmode=CM_DEFAULT, $startX=0, $startY=0)
{
$img_type = array(1=>"gif", 2=>"jpeg", 3=>"png");
$type_idx = array("gif"=>1, "jpg"=>2, "jpeg"=>2,
"jpe"=>2, "png"=>3);
if
(!file_exists($srcFile)) {
return array(-1, "Source file not exists: $srcFile.");
}
$path_parts = @pathinfo($dstFile);
$ext =
strtolower ($path_parts["extension"]);
if
($ext == "") {
return array(-5, "Can't detect output image's type.");
}
$func_output = "image" . $img_type[$type_idx[$ext]];
if
(!function_exists ($func_output)) {
return array(-2, "Function not exists for
output:$func_output.");
}
$data =
@GetImageSize($srcFile);
$func_create = "imagecreatefrom" . $img_type[$data[2]];
if
(!function_exists ($func_create)) {
return array(-3, "Function not exists for
create:$func_create.");
}
$im =
@$func_create($srcFile);
$srcW =
@ImageSX($im);
$srcH =
@ImageSY($im);
$srcX =
0;
$srcY =
0;
$dstX =
0;
$dstY =
0;
if
($option & OP_BEST_RESIZE_WIDTH) {
$dstH = round($dstW * $srcH / $srcW);
}
if
($option & OP_BEST_RESIZE_HEIGHT) {
$dstW = round($dstH * $srcW / $srcH);
}
$fdstW
= $dstW;
$fdstH
= $dstH;
if
($cutmode != CM_DEFAULT) { // 剪切模式 1: 左或上 2: 中 3:
右或下
$srcW -= $startX;
$srcH -= $startY;
if ($srcW*$dstH > $srcH*$dstW) {
$testW = round($dstW * $srcH / $dstH);
$testH = $srcH;
} else {
$testH = round($dstH * $srcW / $dstW);
$testW = $srcW;
}
switch ($cutmode) {
case CM_LEFT_OR_TOP: $srcX = 0; $srcY = 0; break;
case CM_MIDDLE: $srcX = round(($srcW - $testW) / 2);
$srcY = round(($srcH - $testH) / 2); break;
case CM_RIGHT_OR_BOTTOM: $srcX = $srcW - $testW;
$srcY = $srcH - $testH;
}
$srcW = $testW;
$srcH = $testH;
$srcX += $startX;
$srcY += $startY;
} else
{ // 原始缩放
if (!($option & OP_NOT_KEEP_SCALE)) {
// 以下代码计算新大小,并保持图片比例
if ($srcW*$dstH>$srcH*$dstW) {
$fdstH=round($srcH*$dstW/$srcW);
$dstY=floor(($dstH-$fdstH)/2);
$fdstW=$dstW;
} else {
$fdstW=round($srcW*$dstH/$srcH);
$dstX=floor(($dstW-$fdstW)/2);
$fdstH=$dstH;
}
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
}
} ///
end if ($cutmode != CM_DEFAULT) { // 剪切模式
if(
function_exists("imagecopyresampled") and
function_exists("imagecreatetruecolor") ){
$func_create = "imagecreatetruecolor";
$func_resize = "imagecopyresampled";
} else
{
$func_create = "imagecreate";
$func_resize = "imagecopyresized";
}
$newim
= @$func_create($dstW,$dstH);
$black
= @ImageColorAllocate($newim, 0,0,0);
$back =
@imagecolortransparent($newim, $black);
@imagefilledrectangle($newim,0,0,$dstW,$dstH,$black);
@$func_resize($newim,$im,$dstX,$dstY,$srcX,$srcY,$fdstW,$fdstH,$srcW,$srcH);
if
($option & OP_TO_FILE) {
@$func_output($newim,$dstFile);
}
if
($option & OP_OUTPUT) {
if (function_exists("headers_sent")) {
if (headers_sent()) {
return array(-4, "HTTP already sent, can't output image to
browser.");
}
}
header("Content-type: image/" . $img_type[$type_idx[$ext]]);
@$func_output($newim);
}
@imagedestroy($im);
@imagedestroy($newim);
return
array(0, "OK");
}
?>
java 生成缩略图并返回字节数组_关于提取后台图片数据时自动生成缩略图程序...相关推荐
- java实现读取文件返回字节数组
java实现读取文件的内容返回字节数组 1.代码如下所示: public class FileUtil {/*** 方法功能:读取文件内容返回字节流 * @param String fname* @r ...
- mysql查询数据时自动生成序号
写法一 SET @rownum = 0; SELECT @rownum := @rownum +1 AS rownum ,v.id ,v.create_time FROM vehiclegas v O ...
- java插件开发_编写一个IDEA插件之:自动生成Java代码
我很喜欢IDEA的一键自动生成代码功能,例如自动生成构造方法.字段的Get/Set方法.ToString方法等等,除此之外,也有一些插件提供自动生成代码的功能,例如我们所熟悉的GsonFormat插件 ...
- 怎么样把Java的字符串转化为字节数组?
问题:怎么样把Java的字符串转化为字节数组 有没有任何方法把Java的字符串转化为字节数组 我尝试这样: System.out.println(response.split("\r\n\r ...
- movelast对数据记录数有要求吗_客户验厂,电脑坏了,考勤记录数据可以自动生成找回来吗?...
客户验厂 ,电脑坏了 考勤记录数据可以自动生成找回来吗?工厂验厂 之前考勤记录找不到了,可以自动生成考勤记录和工资数据吗? 工厂电脑突然坏了,好烦啊 重庆江津区的一家工厂的考勤操作人员张小姐,最近碰到 ...
- plsql导入数据主键_使用plsql添加数据并自动生成主键
使用plsql添加数据并自动生成主键 步骤如下: 步骤一:新建需要创建的表如: -- Create table create table IRC_SYS_DATADIC ( datadic_id VA ...
- android studio 自动生成sql语句,Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件...
项目源码 系列教程 插件介绍 本篇实战撸个自动生成安卓Sqlite数据库代码的插件,先演示下最终效果 db文件夹下的都是插件自动生成的,而MainActivity里面的代码是我提前写好的,用于实验插件 ...
- matplotlib-bilibili,抖音很火的动态数据视频自动生成(第四节)-视频,语音合成
" matplotlib-bilibili,抖音很火的动态数据视频自动生成(第四节)-视频,语音自动合成" 还记得上一节中我们所提到的数据动态视频吗?这次,为了让大家更加方便的制 ...
- 安装Ruby、Sass在WebStrom添加Watcher实现编辑scss文件时自动生成.map和压缩后的.css文件...
前言 这段时间一直在看Bootstrap,V3官方直接提供了Less版本的源码,就先将Less学完了,很简单的语法,学习写Demo都是在Webstorm里写的,配置了Watcher自动编译(详见< ...
最新文章
- 小而美的个人博客——前端——types and archives
- /sbin/ifup: configuration for eth0 not found解决
- WPF 表格控件 ReoGrid 的简单使用
- android 歌曲剪辑 原理,在Android上,我该如何制作怪异的剪辑区域?
- 谨慎设计方法签名(40)
- Android系统中用C语言来编写服务程序并且开机自启动运行服务
- Python多人聊天室
- 8天玩转并行开发——第二天 Task的使用
- cad计算机试题及答案,CAD考试试题库及参考答案整理版.doc
- 在线生成 html 页面,细说在线版H5页面生成器
- APS计划排产软件在食品饮料行业的应用
- 工具分享:pycharm-2019.1_windows正版最新(附下载链接)
- python_获取两个数,打印中间值
- 固有的不可移植的特征之volatile限定符
- 基于Halcon的MLP(多层感知神经网络)分类器分类操作实例
- 《奇葩说》詹青云:熬过那些日子,你才有资格过不被人左右的人生
- uft自动化测试工具安装步骤_你需要了解的自动化测试框架知识
- iphone6 6p纯代码适配
- 探寻职业教育中的人工智能技术
- java求线性回归置信区间,逻辑回归预测的置信区间
热门文章
- ASN.1概述及数据类型详解
- 云计算数据中心系列 【服务器篇】 视频课程(硬件精讲 + 项目实战)-夏杰-专题视频课程...
- python计算两个日期的天数计算多少岁
- 古今群侠传java,【古今群侠传官网版】古今群侠传最新官网版下载_66游戏网
- An error occurred while loading navigation: Invalid UTF-8 string in BSON document的问题解决
- 中国工商银行牡丹交通卡的办理网点
- 自己电脑(ThinkPad SL410K 28428VC)硬件信息记录
- 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流
- 数据库字段为什么要使用NOT NULL
- 学计算机vr月薪多少,【招生季】数字展示技术(VR方向)专业---月薪过万的专业,赶紧PICK吧!...