找回密码
 注册
Simdroid-非首页
查看: 79|回复: 7

图片的面和线保存时不能覆盖的问题

[复制链接]
发表于 2013-4-29 22:17:20 | 显示全部楼层 |阅读模式 来自 天津
用bmp保存时没有问题,面能覆盖线.但想保存成其他格式的图片,原本在面覆盖下的线冒出来了.不知道如何处理?
我不想让被面覆盖的线或其他元素露出,想保存成bmp的样子.(bmp不能提高输出的分辨率,所以没采用).
望同行赐教,谢谢.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2013-4-29 22:22:44 | 显示全部楼层 来自 天津
Simdroid开发平台
似乎bmp对rendering(渲染)不起作用.保存时选择了3种模式(painters, OpenGL, Zbuffer)也都没起作用.
回复 不支持

使用道具 举报

发表于 2013-5-4 09:24:49 | 显示全部楼层 来自 湖北武汉
用bmp保存时没有问题,面能覆盖线.但想保存成其他格式的图片,原本在面覆盖下的线冒出来了.不知道如何处理?
我不想让被面覆盖的线或其他元素露出,想保存成bmp的样子.(bmp不能提高输出的分辨率,所以没采用).
望同行赐教,谢谢.
拉张力2.png (80.15 KB, 下载次数: 1)

表述我没有看懂。用bmp保存没有问题,那就用bmp。后面说想保存成bmp的样子,就是说不想用bmp,只是要样子。bmp不能提高分辨率,所以没有用,这里是指不能提高分辨率,体积又相对较大,所以没有用。
看了下图,想表达的意思可能是,想用png压缩格式表现出无压缩bmp的图,既要小体积,又要无压缩图像的表现效果。也就是要png,不要bmp。实际图png出错,bmp没有出错。
抱歉,我说得很绕口。
如果不涉及到程序封装,我就先保存成bmp再转图像格式,缩小体积。如果要进行考虑程序内部解决,可以试试图像保存的不同方法,我查了下,结果如下:
1、直接另存为
在figure中使用菜单file——>saveas——>选择保存形式(fig,eps,jpeg,gif,png,bmp等),这个的缺点是另存为的图像清晰度有很大的牺牲
2、复制到剪贴板
在figure中使用菜单edit——>copy figure——>此时图像就复制到剪贴板了,我们可以借助其他软件(比如:绘图板)保存为需要的图片
3、saveas命令格式
Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存,相当于【文件】中的【另存为】
% saveas(figure_handle,filename,fileformat)
plot(1:10);
saveas(gcf,‘myfig.jpg’)
复制代码
4、print函数
print函数原本不是用来进行图像保存了,而是操作打印机的,但是这里我们可以借用下
% print(figure_handle,fileformat,filename)
x=-pi:2*pi/300:pi;
y=sin(x);
plot(x,y);
%Matlab根据文件扩展名,自动保存为相应格式图片,另外路径可以是绝对也可以是相对
print(gcf,'-dpng','abc.png')   %保存为png格式的图片到当前路径
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2013-5-5 09:36:21 | 显示全部楼层 来自 湖北武汉
以下内容是回答lengyunfen版主的问题,放在这里供对这个问题感兴趣的同志参考。
分辨率和图像格式相关?如果我要提高分辨率,我就直接调节图像的大小,使用大图保存或者截屏,这样可以得到大分辨率的原始图像,然后缩小,这样得到的图像就比较清晰。
一般情况下,图像的显示效果和最终采用的尺寸有关。如果在文章中使用的图像是原始图像的放大(为了显示效果或者比例),图像就不清楚,这个时候往往直接按照最终使用的尺寸进行截图,这样的效果最好。有时对图像进行放大或者缩小都会降低最终的显示效果。在图像保存的过程中,位图的上面的矢量元素由原来的分层结构(矢量元素在上,位图在下)或者多个矢量元素的分层结构进行了图层合并,然后统一转成位图,这个位图一旦确定下来,就是最佳显示,对其放大和缩小都会影响显示效果。
这里需要说明,我并没有对楼主的问题进行正面回答,只是谈到了如果遇到图像保存问题和分辨率问题的时候,我准备如何处理。不一定切题。毕竟楼主提供的信息比较少。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2013-5-5 17:12:09 | 显示全部楼层 来自 四川
alexqxp 发表于 2013-5-5 09:36
以下内容是回答lengyunfen版主的问题,放在这里供对这个问题感兴趣的同志参考。
分辨率和图像格式相关?如 ...


谢谢秦老师。还有一个问题:图像保存为位图(也就是jpg或者其它格式的图片)的过程中,根据秦老师的解释,是对figure中的矢量、位图或者多个矢量进行图层合并。那么现在就有一个问题了,matlab能否实现让某个矢量或者位图显示在最顶端,或者说让某个矢量或者位图把其它元素覆盖呢? 这一功能在CAD、GIS等图形分层绘制系统中都能够通过对元素的置顶来实现,matlab能实现吗?还是只能通过改变绘图先后秩序,最后以截图的方式来实现?
回复 不支持

使用道具 举报

发表于 2013-5-5 23:21:35 | 显示全部楼层 来自 湖北武汉
没有实地试试这个,看了下,有对图层进行处理的。比如:
matlabget(gac,'Layer',top)
另外,要考虑分辨率打印的话,可以考虑输出矢量格式。比如:
a=imread('**.jpg')
imshow(a)
b=imrotate(a,90,'nearest'); %  改变图片方向

print -depsc -r600 picture1  % matlab figure 输出 eps


矢量图一般有cdr,ai,wmf,eps格式

分辨率:科研杂志一般要求600dpi,这是打印机的最高分辨率

科研论文常用的图片格式:bmp tif wmf emf jpg等

bmp是位图,保持方向原始,体积大,质量高

tif兼容性好,而且提供预览图,缺点是体积大,但它是论文和
书刊等出版物支持最广的图形文件格式,打印出来效果特别好

wmf和emf是一种矢量图格式,word中内部存储的图片或绘制的图形
对象属于这种格式,无论放大或放小,图形的清晰度不变,而且所需的
存储空间也很少。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2013-5-5 23:27:03 | 显示全部楼层 来自 湖北武汉
另外,关于matlab中get和set的用法,可以看看相关的参考资料。
上网的这台机器里面没有装MATLAB,只是单纯地想想而已。
回复 不支持

使用道具 举报

 楼主| 发表于 2013-5-6 16:29:51 | 显示全部楼层 来自 天津
确实是我没说清楚.
核心就是图层的交融问题.像arcgis等其他软件,可以设定哪个图层在最上面,导出图片时"所见即所得".matlab我还没琢磨清楚.显示的时候,明明是面属性的东西在最上面,线属性的被覆盖,但导出图片时,这些线都跑到最上面了(当然, .fig显示的情况还是面在顶层).
不知道是否可以强制一下,在图片导出时,将面放在最顶层.
print需要和getframe联合使用,这个getframe是抓图的功能,似乎没法提高分辨率.
我希望导出分辨率较高,而面图层在顶层的效果.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-30 08:31 , Processed in 0.042701 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表