我需要编写一个 Python 程序来加载 PSD photoshop 图像,该图像有多个图层并输出 png 文件(每个图层一个)。 你能用 Python 做到吗?我试过 PIL,但似乎没有任何访问层的方法。帮助。 附言。编写我自己的 PSD 加载器和 png 编写器被证明太慢了。
最佳答案
使用 Gimp-Python? http://www.gimp.org/docs/python/index.html
那样您不需要 Photoshop,它应该可以在任何运行 Gimp 和 Python 的平台上运行。这是一个很大的依赖项,但是是免费的。
在 PIL 中这样做:
from PIL import Image, ImageSequence
im = Image.open("spam.psd")
layers = [frame.copy() for frame in ImageSequence.Iterator(im)]
编辑:好的,找到解决方案:https://github.com/jerem/psdparse
这将允许您使用 python 从 psd 文件中提取图层,而无需任何非 python 内容。
关于Python PSD 图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759459/
我有一个相对不复杂的ASP.Net应用程序,它偶尔会在层中显示一strip有阴影的警告消息,以及一个用于关闭通知的按钮。此代码多年来一直运行良好。最近,我收到用户的提示,说响应速度非常慢。他们的体验是页面完全没有响应,当他们点击[确定]按钮时,很长一段时间都没有任何反应。当我录制时间轴时,我可以看到导致网络服务器往返的原始时间,并且我可以看到来自网络服务器的响应。我还可以看到作为响应结果运行的所有Javascript代码。对于应用程序而言,交易已经结束,而对于Javascript而言,交易也已经结束。我们需要做的就是等待用户点击[OK]按钮,我们将关闭通知弹出窗口。这就是“卡住”发生的
TLDR我想刷新计时器上的图层,以便绘制新的kml数据(如更新链接/网络链接)到目前为止,我已经尝试过以下操作函数:functionRefreshKMLData(layer){layer.loaded=false;layer.setVisibility(true);layer.redraw({force:true});}设置函数的间隔:window.setInterval(RefreshKMLData,5000,KMLLAYER);图层本身:varKMLLAYER=newOpenLayers.Layer.Vector("MYKMLLAYER",{projection:newOpenLa
我整天都在做这个,老实说,我没有主意了。我有一些WMS层,我想根据当前的缩放级别显示/不显示。是的,我已经阅读了API文档,它们似乎一如既往地清晰,但我遵循了所有建议,但没有得到想要的结果:(这是我查看的来源之一:http://trac.osgeo.org/openlayers/wiki/SettingZoomLevels然后更糟糕的是,我发现如果您有一个在加载时显示的OpenStreetMap基础层,它似乎会限制您对map的numZoomLevels的控制,这正是我所需要的,因为我确实想将其用作我的加载基础层...所以我的问题是:我做错了什么?在加载时使用OpenStreetMap基
我正在处理GooglemapKML图层点击事件。我正在使用这段代码:functioninitialize(){varmapOptions={center:newgoogle.maps.LatLng(41.875696,-87.624207),zoom:11,mapTypeId:google.maps.MapTypeId.ROADMAP};varmap=newgoogle.maps.Map(document.getElementById("map_canvas"),mapOptions);varctaLayer=newgoogle.maps.KmlLayer('https://sites
我只是想在我的map上显示一条轨迹我试过如下但问题是我不想从GPX文件加载图层中的轨迹点(因为我不想从我得到的坐标生成文件从GPS设备编程)有没有办法从经度和纬度添加轨道层//AddtheLayerwiththeGPXTrackvarlgpx=newOpenLayers.Layer.Vector("Cartrack",{strategies:[newOpenLayers.Strategy.Fixed()],protocol:newOpenLayers.Protocol.HTTP({url:"testTrack.GPX",format:newOpenLayers.Format.GPX()
我创建了一个扩展脚本,可以自动为游戏的Assets纹理创建图层集。创建层集后,该集默认展开。我希望图层集折叠起来,如下图所示。我只留下要扩展的漫反射层。其余的都关闭了。我已经搜索了Adobe关于如何执行此操作的引用资料,但找不到任何内容。如何折叠图层集? 最佳答案 正如神秘嘉宾先生所说,不幸的是你不能折叠一个特定的组,但你可以折叠所有的组。已接受答案的链接已失效,因此我将在此处发布解决方案:varidcollapseAllGroupsEvent=stringIDToTypeID("collapseAllGroupsEvent")
在使用绘图工具在自定义map上绘制其中一个形状后,使用leaflet.draw.js使用leaflet.js。我有一个弹出的表格,上面写着保存或取消。如果用户按下取消,那么我希望删除绘图。例如,我正在绘制一个矩形。这是我目前的来源map.on('draw:created',function(e){varlayer=e.layer;vartype=e.layerType;$("#add-drawing").fadeIn(500);featureGroup.addLayer(e.layer);//Addsrectangle$("a.cancelD").on("click",function
我正在尝试创建一个具有定义中心的圆并在其上放置一个图标标记。如果我使用图像而不是OpenLayers.Geometry.Polygon.createRegularPolygon,代码就可以工作。我无法解决它。在这里你可以找到我的代码:OpenLayersExamplemap=newOpenLayers.Map("mapdiv");map.addLayer(newOpenLayers.Layer.OSM());epsg4326=newOpenLayers.Projection("EPSG:4326");//WGS1984projectionprojectTo=map.getProject
我已经创建了一个Knockout绑定(bind),以便能够使用Googlemap切换KML层,但该解决方案似乎有点慢且“闪烁”。如何避免在每次切换时重新创建map和图层?可以找到正在运行的演示herevarViewModel=function(){varself=this;self.mapOptions={center:newgoogle.maps.LatLng(60.390791,5.306396),zoom:2};self.levels=[{text:"Type1",countries:ko.observableArray(['https://dl.dropbox.com/u/28
我正在使用Vuelayers开发网络map应用程序库,它是具有OpenLayers强大功能的WebmapVue组件。我的模板中有以下代码:........在数据对象中我有以下属性:layers:[{id:'sections',title:'Sections',cmp:'vl-layer-tile',visible:true,source:{cmp:'vl-source-wms',url:'http://localhost:8080/geoserver/sager/wms',layers:'sections',tiled:true,format:'image/png',serverTyp