随笔 - 756  文章 - 0 评论 - 33 阅读 - 136万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一、将图片保存到本地

下面的代码是将图片保存到/img目录下:

代码如下:

复制代码
import process; 
import fsys.stream;
import gdip.bitmap;
import inet.http;

//获取一个网络图片
var pngData = inet.http().get("http://www.baidu.com/img/baidu_logo.gif");

//转换为GDI对象处理
var bitmap = gdip.bitmap( pngData ); // 创建GDI+位图对象

//转换为文件流
var stream = fsys.stream();
bitmap.saveToStream(stream,"*.png"); // 转换为文件流

//获取图片字符串 保存到本地
var str  = stream.readAll();
string.save("/img/test.png",str );

process.explore_select("/img/test.png"); //打开资源管理器,选定该文件
复制代码

保存后的文件如下:

上面的代码将保存的文件名写死了,我们可以将文件名做成随机的

复制代码
import process; 
import fsys.stream;
import gdip.bitmap;
import inet.http;

//获取一个网络图片
var pngData = inet.http().get("http://www.baidu.com/img/baidu_logo.gif");

//转换为GDI对象处理
var bitmap = gdip.bitmap( pngData );

//转换为文件流
var stream = fsys.stream();
bitmap.saveToStream(stream,"*.png");

//获取图片字符串 保存到本地
var str  = stream.readAll();
var fileName = "pic-"+time.stamp() + math.random(1000,9999)+".png"
var relativePath = "/img/"+fileName
string.save(relativePath,str );

process.explore_select(relativePath);
复制代码

保存后的文件如下:

二、将图片加水印再保存到本地

给图片打水印其实就是在图片上写文字,先将图片转为GDI+位图对象,再将位图对象转为图形对象graphics,然后在图形对象中输出文字.

复制代码
import inet.http;
import gdip;
import gdip.bitmap;
import process;
var baiduLogo = inet.http().get("https://up.enterdesk.com/edpic_source/d2/75/42/d275428f3dcc7badcdcec440547ea0ed.jpg");
var bmp = gdip.bitmap( baiduLogo );
var graphics = bmp.getGraphics();
//创建刷子
var brush = gdip.solidBrush(0xFFFF0000);
//创建FontFamily 
var family = gdip.family("宋体");
//创建stringFormat 
var strformat = gdip.stringformat ( ); 
//设置样式
strformat.align = 0/*_GdipStringAlignmentNear*/;
//创建Font
var curFont = family.createFont(  150,2/*_GdipFontStyleItalic*/, 2/*_GdipUnitPixel*/) // 参数一为文字大小
//设置文字抗据齿
graphics.smoothingMode = 4/*_GdipSmoothingModeAntiAlias*/ ;
//消除走样,且边作平滑处理
graphics.textRenderingHint = 3/*_GdipTextRenderingHintAntiAliasGridFit*/;
//设置文字区域
rclayout = gdip.RECTF(); 
rclayout.x = 1500
rclayout.y = 1500
rclayout.width = 5000 //在这里指的是宽度
rclayout.height = 150 //在这里指的是高度
graphics.drawString( "水印     水印     水印"  , curFont
, rclayout, strformat,brush);
//删除所有GDI+对象   
brush.delete()
curFont.delete()
strformat.delete();
family.delete(); 

bmp.save("\img\drawSring.bmp");
process.exploreSelect("\img\drawSring.bmp")
复制代码

效果如下:

 



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   周文豪  阅读(348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示