首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 愿意以100RMB 解决此问题。高手们快来。不为钱也为了实力嘛 [已结贴,结贴人:stive_x]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 15:00:08 楼主
    如题,谁能把下面的代码画出来的图用PHP保存成.JPG格式到本地,要实货(代码)。有思想的,只能说出意思的不要回了。QQ:21118260 邮箱strive_x@126.com 期待高手出现。QQ加时注名下。谢谢

    JScript code
    <SCRIPT LANGUAGE="JavaScript"> var x,y,a,b,i = 0; function drawline(fromX,fromY,toX,toY) { var strElement= "<v:Line id='line_"+fromX+"_"+fromY+"_"+toX+"_"+toY+"' from='" + fromX + "," + fromY + "' to='" + toX + "," + toY + "' strokecolor='red'></v:Line>"; var newPoint = document.createElement(strElement); document.getElementById("map").appendChild(newPoint); } function draw() { i++; if(i%2==1) { x=window.event.x;y=window.event.y;return false; } a=window.event.x;b=window.event.y; drawline(x,y,a,b); x=a;y=b; } function draws() { if(i%2==1) { if(x==undefined&&b==undefined){return false;} if(x==window.event.x&&b==window.event.y){return false;} if(document.getElementById("TempLine")){document.getElementById("TempLine").outerHTML=""} var strElement= "<v:Line id='TempLine' from='" + x + "," + y + "' to='" + window.event.x + "," + window.event.y + "' strokecolor='red'></v:Line>"; var newPoint = document.createElement(strElement); } document.getElementById("map").appendChild(newPoint); } </SCRIPT> <html xmlns:v="urn:schemas-microsoft-com:vml"> <HEAD> <META http-equiv="Content-Type" content="text/html;Charset=gb2312"> <title>vml实例</title> <STYLE> v\:*{behavior:url(#default#VML);}/*声明V为VML变量*/ </STYLE> </HEAD> <BODY> <table border="1" align="center"> <tr> <td><div id="map" style="width:600px;height:500px;background-color:#cccccc;position:relative;" onmousedown="draw();" onmousemove="draws();"></div> </td> </tr> </table> </body> </html>
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 15:17:421楼 得分:0
    呵呵,麻烦,我还是说思想

    用一个对象,记录线条的起始结束坐标。
    最后post给PHP,由PHP根据这些坐标,画一份一样的图,
    header给客户端

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 16:06:402楼 得分:0
    我连思想都懒得说了....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 16:18:463楼 得分:0
    代码我都懒的看了...
    ^_^
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 16:20:424楼 得分:0
    ^_^
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 16:32:165楼 得分:0
    贴子我都懒得进了 :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 17:10:356楼 得分:0
    be lazy.....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 17:16:117楼 得分:0
    ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sibang
    • 等级:
    发表于:2008-04-29 17:30:048楼 得分:0
    回帖我都懒得回了,因为当我不懒得时候都研究这js代码了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lijia4
    • 等级:
    发表于:2008-04-29 17:36:299楼 得分:0
    看起来有点麻烦呀。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 17:58:1910楼 得分:0
    我来看货的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • aday
    • 等级:
    发表于:2008-04-29 20:09:4511楼 得分:0
    估计100RMB对于高手来说,都懒得动手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 20:58:1812楼 得分:0
    个人认为不需要保存成什么jpg文件吧,你如果只需要保存这个效果,直接document.getElementById("map").innerHTML得到map里的标记,保存到数据库,显示的时候,取出来放到你map标记里显示就可以了.

    如果实在要保存成jpg,其实也可以
    主要通过 <v:Line id='line_"+fromX+"_"+fromY+"_"+toX+"_"+toY+"' from='" + fromX + "," + fromY + "' to='" + toX + "," + toY + "' strokecolor='red'> </v:Line>这个标记的特点,用点js加一个简单的php函数就OK了.

    要实现是完全没有问题,可是现在我没有时间去写代码,有时间写出来了,就发上来.
    钱就不必了,这里多是相互帮助的地方.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 21:00:1513楼 得分:0
    支持楼上的,把渲染的代码存下来也是个方案.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 22:57:1614楼 得分:100
    HTML code
    <SCRIPT LANGUAGE="JavaScript"> var x,y,a,b,i = 0; function drawline(fromX,fromY,toX,toY) { var strElement= "<v:Line id='line_"+fromX+"_"+fromY+"_"+toX+"_"+toY+"' from='" + fromX + "," + fromY + "' to='" + toX + "," + toY + "' strokecolor='red'></v:Line>"; var newPoint = document.createElement(strElement); document.getElementById("map").appendChild(newPoint); } function draw() { i++; if(i%2==1) { x=window.event.x;y=window.event.y;return false; } a=window.event.x;b=window.event.y; drawline(x,y,a,b); x=a;y=b; } function draws() { if(i%2==1) { if(x==undefined&&b==undefined){return false;} if(x==window.event.x&&b==window.event.y){return false;} if(document.getElementById("TempLine")){document.getElementById("TempLine").outerHTML=""} var strElement= "<v:Line id='TempLine' from='" + x + "," + y + "' to='" + window.event.x + "," + window.event.y + "' strokecolor='red'></v:Line>"; var newPoint = document.createElement(strElement); } document.getElementById("map").appendChild(newPoint); } function savemap(){ var mapobj=document.getElementById("map"); var nodes=mapobj.childNodes; var nodesNum = nodes.length; var cobj,_from,_to,re; var LineString=""; for(var i=nodesNum-1;i>=0;i--) { cobj=nodes[i]; if(cobj.id!="TempLine"){ _from=cobj.from+""; _to=cobj.to+""; re = /pt/g; _from=_from.replace(re,""); _to=_to.replace(re,""); LineString=LineString+_from+"&"+_to+"|"; } } mapobj.innerHTML=LineString; //将LineString通过ajax方式提交到php页面.并根据返回结果进行提示. //ajax的代码就不写了哈,都是晓得的 } </SCRIPT> <html xmlns:v="urn:schemas-microsoft-com:vml"> <HEAD> <META http-equiv="Content-Type" content="text/html;Charset=gb2312"> <title>vml实例</title> <STYLE> v\:*{behavior:url(#default#VML);}/*声明V为VML变量*/ </STYLE> </HEAD> <BODY> <table border="1" align="center"> <tr> <td><div id="map" style="width:600px;height:500px;background-color:#cccccc;position:relative;" onmousedown="draw();" onmousemove="draws();"></div> </td> </tr> </table> <p align="center"> <input type="button" name="Submit" value="保存图象" onClick="return savemap();"> </p> </body> </html>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 22:57:4915楼 得分:0
    PHP code
    <?php header("Content-type: image/jpeg"); $IM = imagecreate (600,500); $White = imagecolorallocate($IM,0xf5,0xf5,0xf5); $Red = imagecolorallocate($IM,0xff,0x00,0x00); //$LineString=$_GET["LineString"]; //$LineString=$_POST["LineString"]; $LineString="318,135&327,263.25|148.5,263.25&327,262.5|318.75,137.25&148.5,263.25|139.5,137.25&148.5,262.5|138.75,136.5&318,135.75|";//例子 $LineArray=explode("|",$LineString); foreach($LineArray as $LineData){ $LineChild=explode("&",$LineData); if(count($LineChild)==2){ $LineStart=explode(",",$LineChild[0]); $LineEnd=explode(",",$LineChild[1]); imageline($IM,$LineStart[0],$LineStart[1],$LineEnd[0],$LineEnd[1],$Red); } } imagejpeg($IM); //imagejpeg($IM,"test.jpg",80);//保存图片.80为图片质量 //推荐用ImagePNG()输出,这样图片质量要好些,文件大小也小些 ?>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 22:59:5416楼 得分:0
    html里的 mapobj.innerHTML=LineString;
    这句是测试用的.主要是得到$LineString的值,用于在php里测试.


    给分吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 00:46:0517楼 得分:0
    我懒得长肉了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • justicesun
    • 等级:
    发表于:2008-04-30 01:22:0718楼 得分:0
    右键另存为...哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 10:05:2719楼 得分:0
    痛哭流涕,非常感谢12楼。我先实验下。分一定给。现在没有环境。弄不了。晚上实验完了。有不懂的再请教你哈。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tantaiyizu
    • 等级:
    发表于:2008-04-30 10:20:5220楼 得分:0
    巨无霸
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English