`
wayfarer
  • 浏览: 297674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何从网络中获取png图片

阅读更多

1. J2ME

// 方法1
Connector conn = Connector.open(url, Connector.READ_WRITE, true);
InputStream is = ((HttpConnection) conn).openInputStream();
Image img = Image.createImage(is);

// 方法2
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bytes = new byte[128];
int size = 0, totalSize = 0;
HttpConnection conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true);
InputStream is = conn.openInputStream();
try {
	while ((size = is.read(bytes)) != -1) {
		baos.write(bytes, 0, size);
		totalSize += size;
	}
} catch (IOException e) {
	System.out.println("IOEx = " + e.toString());
}
Image img = Image.createImage(baos.toByteArray(), 0, totalSize);
bytes = null;
 

2. Android

// 方法1
public class MapAppl extends Activity {
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(new mapView(this));
	}
	private class mapView extends View {
		public mapView(Context context) {
			super(context);
		}
		protected void onDraw(Canvas canvas) {
			super.onDraw(canvas);
			Bitmap bm = null;
			try {
				InputStream is = getInputStream("http://www.tiexin.com/images/map_blocks/1/4/3/3/00000037_00000031.png");
				bm = BitmapFactory.decodeStream(is);
				if (is != null) {
					is.close();
					is = null;
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			Paint p = new Paint();
			canvas.drawBitmap(bm, 40, 40, p);
		}
		
		private InputStream getInputStream(String strURL) throws IOException {
			URL url = new URL(strURL);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setDoInput(true);
			conn.setConnectTimeout(1000);
			conn.setRequestMethod("GET");
			conn.connect();
			for (int i = 0; i < 5; i++) { // 连接5次
				if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
					InputStream is = conn.getInputStream();
					if (conn != null) {
//						conn.disconnect(); // 在未对is进行处理前,不能conn.disconnect()
						conn = null;
					}
					return is;
				}
			}
			return null;
		}
	}
}

 

// 方法2
public class MapAppl2 extends Activity {
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(new mapView(this));
	}
	private class mapView extends View {
		public mapView(Context context) {
			super(context);
		}
		protected void onDraw(Canvas canvas) {
			super.onDraw(canvas);
			Bitmap bm = null;
			try {
				bm = getImage("http://www.tiexin.com/images/map_blocks/1/4/3/3/00000037_00000033.png");
			} catch (IOException e) {
				e.printStackTrace();
			}
			Paint p = new Paint();
			canvas.drawBitmap(bm, 40, 40, p);
		}
		public final Bitmap getImage(String strUrl) throws IOException {
			Bitmap bm;
			HttpClient httpclient = new DefaultHttpClient();
			HttpGet httpget = new HttpGet(strUrl);
			HttpResponse response = httpclient.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				InputStream input= entity.getContent();
				byte[] bitImage = new byte[1024*1024], data=new byte[256];
				int totalSize = 0, size = 0;
				while ((size = input.read(data)) != -1) {
					System.arraycopy(data, 0, bitImage, totalSize, size);
					totalSize += size;
				}
				bm = totalSize > 0 ? BitmapFactory.decodeByteArray(bitImage, 0, totalSize) : null;
			} else {
				bm = null;
			}
			// Do not feel like reading the response body
			// Call abort on the request object
			httpget.abort();
			return bm;
		}
	}
}
一般建议使用HttpClient进行连接,因为在redirect的时候URL不管用。 此外,Http连接后,一定要判断返回的statusCode(ResponseCode)。
分享到:
评论
1 楼 wayfarer 2009-08-31  
获得本地图片:
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);
	Paint p = new Paint();
	Bitmap bm = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(bm);
	Resources r = this.getContext().getResources();
    Drawable d = r.getDrawable(R.drawable.backdrop);
    d.setBounds(0, 0, 128, 128);
    d.draw(c);
	canvas.drawBitmap(bm, 0, 0, p);
}

相关推荐

    从网络上获取图片

    8. **安全与版权**:从网络获取图片时,务必考虑版权问题。未经许可的商业使用可能导致法律纠纷。同时,确保数据安全,避免从不安全的来源下载图片,防止潜在的恶意软件或病毒。 9. **图片处理**:获取图片后,可能...

    PNG图片宽高一把梭,爆破PNG图片宽高

    在CTF(Capture The Flag)竞赛中,"PNG图片宽高一把梭,爆破PNG图片宽高"可能是指一种解谜或破解技术,参赛者需要通过某种方式获取PNG图像的隐藏信息,例如通过解析或篡改PNG文件的头部数据来找出图片的真实宽高,...

    2000个PNG图标

    "2000个PNG图标"涵盖了各种小图标,这意味着用户可以在这些图标中找到大量不同类型的图形元素,例如: 1. **导航图标**: 如箭头、定位图标(如"LocationInformation"可能代表的),常用于指示用户在应用或网站中的...

    无法获取网络图片 素材下载 PNG素材 网页素材

    在“无法获取网络@3x.png、无法获取网络@2x.png、无法获取网络.png”这些文件名中,我们可以看到它们可能是针对不同设备分辨率的图片资源,通常@3x是针对高分辨率设备,@2x则是中等分辨率,无后缀的通常是标准分辨率...

    从网络获取图片按图片原大小显示

    1. **网络图片加载**:Android中,我们可以使用多种库来从网络获取图片,如 Glide, Picasso, Fresco 等。这些库提供了便捷的方法来加载网络图片,并且支持缓存策略,减少网络请求次数,提高用户体验。 2. **图片原...

    UI设计PNG图标

    - **透明性**:PNG格式支持Alpha通道透明,这意味着图标可以有不同程度的透明,从完全不透明到完全透明,为设计师提供了更大的灵活性。 - **无损压缩**:与JPEG等有损压缩格式不同,PNG在压缩时不会丢失图像质量,...

    4000个png图标打包下载

    这些PNG图标可能包含了各种类别,如通用的箭头、操作按钮、菜单图标、社交网络标识、工具图标、文件类型图标等,能够满足多种设计需求。 打包下载的优势在于方便用户一次性获取大量资源,节省了逐个下载的时间。这...

    易语言取图标返回png字节集源码

    本文将深入探讨易语言中如何通过GDIPlus类模块来获取文件图标,并将其转换为PNG字节集的源码实现。 易语言,全称“易学易用语言”,设计初衷是为了降低编程的难度,让不懂计算机语言的人也能进行程序开发。它的语法...

    微信小程序开发常用的1600个PNG图标大全

    在这些图标中,我们可以找到各种类型的图示,例如导航图标、功能图标、社交图标、购物图标、设置图标等。这些图标通常用于表示页面间的跳转、操作提示、功能开关等,帮助用户直观理解界面功能。例如,向左或向右的...

    微信小程序开发常用的1600个PNG图标

    1. 下载资源:将提供的压缩包解压,获取PNG图标文件。 2. 图标管理:在微信开发者工具中,创建或导入图标库,将PNG图标导入并进行命名管理。 3. 引用图标:在小程序代码中,通过指定图标名称来引用,通常使用`...

    png图片批量压缩工具

    该工具的目标就是在保持图片质量的前提下,尽可能减小PNG图片的体积,从而提高网络传输速度,节省存储空间。 PNG压缩的主要原理是利用智能算法和优化技术,重新编码图像数据,移除冗余和不必要的信息,同时尽量避免...

    VC6.0使用PNG库读取png图片数据

    7. 编写代码:在项目中编写读取PNG图片数据的代码。以下是一个简单的示例: ```cpp #include &lt;png.h&gt; void readPNG(const char* filename) { FILE* fp = fopen(filename, "rb"); if (!fp) { // 错误处理 } ...

    PNG Delphi 处理PNG图像的Delphi控件

    对于需要与网络交互的应用,如网页浏览器或下载管理器,PNGDelphi 控件也可以帮助解析和显示从网络上获取的 PNG 图像。 总的来说,PNG Delphi 提供了一套完整的解决方案,让 Delphi 开发者能够高效地处理 PNG 图像...

    常用小图标1000个PNG格式

    总的来说,"常用小图标1000个PNG格式"为网页设计师和开发者提供了一个丰富的资源库,便于他们快速获取高质量的图标,简化设计流程,提升项目的整体质量和用户体验。无论是快速构建原型还是完善细节,这一套图标都能...

    PNG图片下载、PNG、图片下载

    PNG(Portable Network Graphics)是一种无损压缩的位图图像格式,广泛应用在网页...总的来说,PNG图片下载涉及到网络传输、图像处理、网页开发等多个方面,理解这些知识点有助于更高效、合规地获取和使用PNG图片资源。

    将png图片转换为bmp

    在实际操作中,如果你有一个包含多个PNG图片的文件夹,可以遍历文件夹,对每个PNG文件执行此转换操作。例如,你可以使用os模块的`os.walk()`函数来实现批量转换: ```python import os def batch_convert_png_to_...

    png-->ico 图片格式转换器

    描述中提到了“可以从下载PNG的图标”,这意味着用户可能需要先从互联网上获取PNG格式的图标资源,然后再进行转换。这可能是从设计网站、开源社区或者直接从设计者那里获得。 在压缩包文件“Png转Ico”中,可能包含...

    获取网络图片源码

    在IT行业中,获取网络图片源码通常涉及到网络编程、HTTP协议以及网页抓取技术。这里我们将深入探讨这些知识点,以帮助你理解如何实现这个功能。 首先,我们需要了解HTTP(超文本传输协议)。它是互联网上应用最广泛...

    J2ME中png图片处理压缩

    // 从源获取PNG数据 Image image = Image.createImage(imageData, 0, imageData.length); ``` 2. **优化内存使用**: 由于J2ME平台的内存限制,加载大图可能会导致内存溢出。我们可以使用`Image....

Global site tag (gtag.js) - Google Analytics