SWT setImage 问题!高手进

yhwyhwgnauhs 2010-02-16 05:56:35
Shell 的 setImage 方法设置控制菜单图标。我先用 getResource 方法获取 URL,结果把程序连同图片资源一起打包后始终无法识别出路径,但是直接运行主类 class 是可以识别路径的,并且 ico 格式是支持的。

然后我换了一种办法,用 getResourceAsStream 方法获取了流,结果可以找到包内的文件了。但是 ico 格式它提示错误:org.eclipse.swt.SWTException: Invalid image,换一个 png 的图片就没问题。

然后我用 Windows 照片查看器 看了一下,发现那个 ico 其实包含了十几张图片,我实际需要的只是其中的一张。我想大概是读入流的时候出了问题。

我就应该要把 ico 拆解开来,该如何弄?或者有没有更直接的办法?
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KimSoft 2012-02-13
  • 打赏
  • 举报
回复
http://mydown.yesky.com/soft/multimedia/formattransfer/493/417993.shtml 转换小工具
KimSoft 2012-02-13
  • 打赏
  • 举报
回复
this.setImageDescriptor(ImageDescriptor.createFromImageData(imageData));
KimSoft 2012-02-13
  • 打赏
  • 举报
回复
同样的问题啊。
this.setImageDescriptor(ImageDescriptor.createFromFile(this.getClass(), icons[index]));//这样没问题

ImageData imageData = new ImageData(this.getClass().getResourceAsStream(icons[index]));//准备用这个读,再变一下大小,结果报错!
this.setImageDescriptor(imageData);

不行就先转成png吧
http://blogs.bytecode.com.au/glen/2005/04/15/converting-ico-files-for-use-in-swt-apps.html
healer_kx 2010-02-16
  • 打赏
  • 举报
回复
恐怕是不行的了,你还是得到每一个ico吧。
package com.loopj.android.image; import android.content.Context; import android.graphics.Bitmap; import android.util.AttributeSet; import android.widget.ImageView; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SmartImageView extends ImageView { private static final int LOADING_THREADS = 4; private static ExecutorService threadPool = Executors.newFixedThreadPool(LOADING_THREADS); private SmartImageTask currentTask; public SmartImageView(Context context) { super(context); } public SmartImageView(Context context, AttributeSet attrs) { super(context, attrs); } public SmartImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } // Helpers to set image by URL public void setImageUrl(String url) { setImage(new WebImage(url)); } public void setImageUrl(String url, SmartImageTask.OnCompleteListener completeListener) { setImage(new WebImage(url), completeListener); } public void setImageUrl(String url, final Integer fallbackResource) { setImage(new WebImage(url), fallbackResource); } public void setImageUrl(String url, final Integer fallbackResource, SmartImageTask.OnCompleteListener completeListener) { setImage(new WebImage(url), fallbackResource, completeListener); } public void setImageUrl(String url, final Integer fallbackResource, final Integer loadingResource) { setImage(new WebImage(url), fallbackResource, loadingResource); } public void setImageUrl(String url, final Integer fallbackResource, final Integer loadingResource, SmartImageTask.OnCompleteListener completeListener) { setImage(new WebImage(url), fallbackResource, loadingResource, completeListener); } // Helpers to set image by contact address book id public void setImageContact(long contactId) { setImage(new ContactImage(contactId)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧