J2ME中通过Http协议传输图片

J2ME移动游戏引擎架构解析:从标准MIDP到高性能游戏开发 在移动嵌入式开发领域,Java ME(J2ME)作为早期跨平台解决方案,通过MIDP规范为移动应用提供了基础运行环境。其核心原理是在资源受限设备上实现Java应用的标准化部署,技术价值在于平衡了开发效率与硬件多样性。然而,面对图形渲染、音效处理等高性能需求,标准API往往显得力不从心。为此,行业引入了专门的移动游戏引擎,通过在J2ME架构之上构建原生高性能桥梁,直接优化图形渲染与音效支持等关键模块。这类引擎通常遵循开放与优化双重设计原则,既保持与JCP标准的兼容性,又通过本地化实现和硬件抽象层提升执行效率。 阅读详情
        曾经在优快云看到多位网友问图片传输的问题,因此决定写篇文章讲述一个问题,最后通过实例演示如何解决这个问题并提供源代码。如果你对联网中的操作以及多线程还不熟悉那么请参考本站如下文章。
    编写高效友好的多线程J2ME联网应用
    开发J2ME低级联网应用  
   
开发J2ME联网应用程序

    其实传输图片和传输其他的数据没有什么区别只是我们选择怎样的处理方法,如果我们传输java基本数据类型或者String那么比较容易,直接writeInt()  readInt()等方法就可以了。如果是传输一整个对象比如一个人的信息,那么可以使用序列化把它拆开为按照一定的顺序传输多个java的基本类型和String。至于图片显得要特殊一点,因为它是二进制的文件,Java中的InputStream提供了方法来读取二进制文件,如果你对此方面的知识不熟悉请参考使用Java操作二进制文件。

    在我们联网的时候同样还是要在另外一个线程进行,为了提高效率我们使用wait()和notify()来调度线程,线程启动后会进入wait()的状态,因为我们在midlet对象上调用了wait()。当用户按了Connect Command后我们调用midlet.notify()来让线程继续运行。
        if (cmd == connCommand)
        {
            synchronized (this)
            {
                notify();
            }
        } else if (cmd == exitCommand)
        {
            exitMIDlet();
        }

            synchronized (midlet)
            {
                try
                {
                    midlet.wait();
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
            System.out.println("connect to server...");

    当读取Image文件的时候,我们建立连接后就可以得到InputStream的实例了,接收数据显得比较重要。我采用的方法是新建一个ByteArrayOutputStream实例baos,然后通过read()得到字节首先写入到baos里面去。传输结束后通过baos.toByteArray()得到Image的字节数据,这样我们就可以很容易的构建出图片来了,最后把它显示在Form里面。
                httpConn = (HttpConnection) Connector.open(URL);
                is = httpConn.openInputStream();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int ch = 0;
                while ((ch = is.read()) != -1)
                {
                    baos.write(ch);
                }
                byte[] imageData = baos.toByteArray();
                Image image = Image.createImage(imageData, 0, imageData.length);
                midlet.setImage(image);
                baos.close();
                is.close();
                httpConn.close();
    首先你应该在web服务器上放一个大小适中的png格式的图片,然后运行本程序进行联网,这样就可以通过http协议传输图片了。

 

 

 

 

 

 

 

 

 

下面是源代码

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.*;

public class ImageGetter extends MIDlet implements CommandListener
{

    private Display display;
    public static final Command connCommand = new Command("Connect",
            Command.ITEM, 1);
    public static final Command exitCommand = new Command("Exit", Command.EXIT,
            1);
    private Form mainForm;
    private GetterThread gt;

    protected void startApp() throws MIDletStateChangeException
    {

        display = Display.getDisplay(this);
        mainForm = new Form("Image Getter");
        mainForm.append("Click Connect to get Image");
        mainForm.addCommand(connCommand);
        mainForm.addCommand(exitCommand);
        mainForm.setCommandListener(this);
        display.setCurrent(mainForm);
        gt = new GetterThread(this);
        gt.start();

    }

    public void setImage(Image image)
    {

        mainForm.append(image);
        display.setCurrent(mainForm);
    }

    protected void pauseApp()
    {

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {

    }

    public void commandAction(Command cmd, Displayable disp)
    {
        if (cmd == connCommand)
        {
            synchronized (this)
            {
                notify();
            }
        } else if (cmd == exitCommand)
        {
            exitMIDlet();
        }
    }

    private void exitMIDlet()
    {
        try
        {
            destroyApp(false);
            notifyDestroyed();
        } catch (MIDletStateChangeException e)
        {
            e.printStackTrace();
        }
    }

    class GetterThread extends Thread
    {
        private ImageGetter midlet;
        public static final String URL = "http://localhost/j2medev.png";
        private HttpConnection httpConn = null;
        private InputStream is = null;

        public GetterThread(ImageGetter midlet)
        {
            this.midlet = midlet;
        }

        public void run()
        {
            synchronized (midlet)
            {
                try
                {
                    midlet.wait();
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
            System.out.println("connect to server...");
            try
            {
                httpConn = (HttpConnection) Connector.open(URL);
                is = httpConn.openInputStream();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int ch = 0;
                while ((ch = is.read()) != -1)
                {
                    baos.write(ch);
                }
                byte[] imageData = baos.toByteArray();
                Image image = Image.createImage(imageData, 0, imageData.length);
                midlet.setImage(image);
                baos.close();
                is.close();
                httpConn.close();

            } catch (IOException e)
            {
                e.printStackTrace();
            }

        }
    }

}

 

Http方式实现图片上传 学习笔记,通过Http方式实现固定路径下的图片上传,本资源只是Android代码,不含服务器端代码。 立即下载

相关推荐

信号输入到底要不要接GND?单端与差分输入的接地选择与抗干扰分析

在电子工程与工业现场中,接地是信号完整性的基石。电压本身是相对值,任何测量都需要一个公共参考点,这就是地(GND)在信号输入中的核心作用。单端输入依赖信号源与接收端共地,以GND为基准还原信号;差分输入则直接测量两根信号线之间的差值,天然不依赖本地地电位,因此能有效抑制共模干扰和地环路噪声。实际选型时,需要根据传感器类型、传输距离、地电位差大小权衡:短距离共地良好的场景可用单端,长距离或高干扰环境应优先考虑差分或隔离方案。本文从接地原理出发,结合实际接线与故障排查经验,帮助工程师在PLC、采集卡和传感器链路

weixin_28703507的博客 311

HTTP系列六、HTTP传输大文件

早期互联网上传输的基本上都是只有几 K 大小的文本和小图片,现在的情况则大有不同。网页里包含的信息实在是太多了,随随便便一个主页 HTML 就有可能上百 K,高质量的图片都以 M 论,更不要说那些电影、电视剧了,几 G、几十 G 都有可能。如何在有限的带宽下高效快捷地传输这些大文件就成了一个重要的课题。

勇心在馨 1239

汽车轮胎动平衡背后的秘密:如何用惯性主轴原理消除方向盘抖动

本文深入解析了汽车轮胎动平衡的核心原理,即利用惯性主轴原理消除高速行驶时的方向盘抖动。文章从方向盘抖动的现象出发,阐释了动不平衡产生的物理本质,并详细介绍了如何通过动平衡机测量、计算与校正,使轮胎-轮毂系统的实际旋转轴回归其惯性主轴,从而实现稳定运转。

grafana6viz的博客 346

所有语言的http服务器上传和下载图片通用要点(Poco C++)

文章目录前言一、浏览器上传图片二、浏览器下载图片1.后端2.前端 前言   在很多时候,我们开发http后端服务器都需要在前端和后端之间传输图片, 本文将介绍http服务器传输图片时的技术要点。 一、浏览器上传图片   一般的浏览器上传图片均是使用multipart/form-data的Content-Type进行图片的传输,当然这种类型不仅仅是用于传图片,也用于传输任意文件。html网页使用的代码如下: <form method="POST" action="http://你的网站的接口" en

weixin_38693938的博客 3044

海上AI导航系统:技术架构与行业应用解析

计算机视觉与强化学习技术在海上导航系统中的应用正逐步改变传统航运业。通过多模态传感器融合技术,现代AI导航系统能够实现高精度的物体识别与实时路径规划,有效解决能见度依赖、决策延迟等核心痛点。以Orca AI的SeaPod系统为例,其结合了NVIDIA GeForce RTX 4070的边缘计算能力与多光谱协同识别技术,在恶劣环境下仍能保持稳定性能。这类系统不仅提升了航行安全性,还通过优化航线显著降低燃油消耗,在东京湾、马六甲海峡等繁忙水域展现出巨大价值。随着毫米波雷达融合方案的测试推进,未来海上导航将突破极

weixin_33597080的博客 354

SOLIDWORKS Flow Simulation 颗粒分离器仿真:从流场分析到分离效率优化

计算流体力学(CFD)是研究流体流动、传热及相关物理现象的核心工具,其基本原理是通过数值方法求解控制流体运动的纳维-斯托克斯方程。在工程实践中,CFD的价值在于能够对复杂流动进行高保真度仿真,从而在产品设计阶段预测性能、优化结构,显著降低物理样机的试制成本和周期。颗粒分离器作为环保、化工、矿业等领域的关键设备,其设计核心在于平衡分离效率与压力损失。借助SOLIDWORKS内嵌的Flow Simulation模块,工程师可以高效地执行流体仿真,特别是对涉及离散相的颗粒运动进行轨迹追踪和效率统计。该技术方案通过

weixin_28709649的博客 321

http发送和接收图片json文件

上述代码中json数据有五个部分:image为图片数据,level是告警等级,rtsp为数据流地址,type是算法类型,label是算法标签等,所以数据发送为这五个内容。上述完整代码可详见github或者百度网盘。

zk_ken的博客 2393

Android MediaCodec学习笔记

模块介绍 基本概念 OpenMAX是Khronos Group提出的标准,目标在于创造一个统一的接口,加速大量多媒体资料的处理。OpenMAX分成三层:应用层(Application Layer, AL), 整合层(Integration Layer, IL) 以及开发层(Development Layer, DL)。 OpenMAX (Open Media Acceleration) OpenMAX AL Application Layer ..

kisshine 2358

图片传输--通过http协议

常见通信协议 应用层: HTTP(hypertext transfer protocol ):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SFTP(SSH File Transfer Protocol):安全文件传送协议 DNS(domain name system):域名系统...

weixin_43796192的博客 2万+

mtk-drm初始化

mtk-drm初始化走读

zhexingsunba的博客 4929

上下文理解的AI增强方案:AI应用架构师的架构洞察

本文将从AI应用架构师的视角,深入探讨“上下文理解”的技术本质、核心挑战,以及一套可落地的上下文增强架构方案。我们会拆解上下文理解的底层需求,分析架构设计中的关键决策,并通过具体案例展示如何构建一个能“记住过去、理解现在、预测未来”的AI系统。三个维度:上下文的内容范围(短期/中期/长期)、数据类型(文本/结构化/多模态)、技术挑战(窗口限制/信息过载/跨会话一致性);三种架构模式:分层上下文存储(热/冷数据分离)、上下文路由(按需筛选)、动态压缩(适配模型窗口);四个关键组件。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 219

J2ME通过Http协议传输图片(转)

http://www.java3z.com/cwbwebhome/article/article7/735.html?id=1227   曾经在优快云看到多位网友问图片传输的问题,因此决定写篇文章讲述一个问题,最后通过实例演示如何解决这个问题并提供源代码。如

xhp317的专栏 900

058、时域降噪(Temporal Denoise):运动补偿与递归滤波在视频降噪中的应用

本文深入探讨了时域降噪(Temporal Denoise)技术在视频处理中的应用。作者通过车载环视项目案例,揭示了空域降噪的局限性,提出利用帧间信息进行降噪的核心思路。文章详细解析了递归滤波和运动补偿两大关键技术,指出递归滤波简单但易产生拖影,而运动补偿通过计算运动矢量解决此问题。作者还分享了多帧降噪方案的优势与算力挑战,并总结了噪声模型匹配、运动矢量一致性等实战调优经验。最后强调时域降噪需要与空域降噪平衡,指出调试工具的重要性,提出"在保证运动区域无鬼影的前提下追求信噪比"的实践原则,体现了算法复杂度与效

zzfmlxs的博客 92

网址

J2ME中通过Http协议传输图片

david286的专栏 910

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

J2ME游戏 之 NORMAL-FRAME

作者:s0s  文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=1000今得 老鸟J2ME的代码,收益良多。写写大家分享。总结几点:1.类尽量的少,一般是2个到5个。一般就一个MIDlet,Canvas类,别的都是附属类。2.舍弃包package 概念,都放在同一层结构下。3.上移动梦网等运营商让用户使用的程序 都用mid

mobilechannel的专栏 1054

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

详解基于J2ME平台下SOAP协议的应用

J2ME作为嵌入式系统应用平台得到了迅速的发展,JAVA语言固有的平台无关性使得基于J2ME平台的嵌入式应用系统具有广阔的前景。受限于嵌入式设备及消费类电器硬件条件的限制,J2ME平台提供的功能有限,如何能够在有限的资源下拓展J2ME的功能,使得J2ME平台能够处理SOAP协议是本文研究的重点。 目前企业应用正在向面向WEB服务的SOA架构转变,嵌入式系统与企业应用系统...

weixin_34235457的博客 182

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

利用J2ME制作你自己的网络相册

     现在越来越多的手机都支持拍照功能,但是各种型号的手机所能存储的照片容量都是有限的,而且如果想把照片导出放到电脑上观看,要么需要有数据线或者红外线,要么就通过发彩信的方式获得,这两种方式第一种需要有电脑在身边,第二种发一条彩信至少需要5角钱吧,又太浪费钱而且也不太方便,而目前支持kjava的手机也越来越多,为何不想办法利用j2me的网络功能和手机的拍照功能把拍到的照片直接上传到网络上呢?这

可不可以不糊涂 1717

J2ME无线联网技术

J2ME无线联网技术            首先看一下GCF框架体系,如下图所示:       CLDC只是定义了基于底层通信协议(如传输流或数据报等)的网络连接中的一些接口定义,至于具体某种高层协议 的网络连接一般在简表中定义,因为不同的设备支持的高层网络通信协议是不一样的,因此完全没必要在CLDC配置中来定义。      在专门针对移动信息设备的MIDP简表中,定义了ServerS...

☞ 刘小文的专栏 183

J2ME多人游戏注意事项

J2ME多人游戏注意事项一 MIDP通讯技术1. HTTP:当网络中的真实电话配置HTTP流MIDlet的时候,不要尝试一次只发送一小段数据:在发完全部数据之前,不会收到什么东西。当从服务器发送HTTP响应要被延迟到某个事件发生,移动网络中开发连接可能很昂贵,通常会因超时而被中端,这一情况比在互联网上更容易发生。移动电话通常没有资源去支持多重开放的HTTP连接。在数据结构和数据

大海的专栏 1164

j2me实现手机拍照

现在越来越多的手机都支持拍照功能,但是各种型号的手机所能存储的照片容量都是有限的,而且如果想把照片导出放到电脑上观看,要么需要有数据线或者红外线,要么就通过发彩信的方式获得,这两种方式第一种需要有电脑在身边,第二种发一条彩信至少需要5角钱吧,又太浪费钱而且也不太方便,而目前支持kjava的手机也越来越多,为何不想办法利用j2me的网络功能和手机的拍照功能把拍到的照片直接上传到网络上呢?这样,在任何

曲奇 1201

j2me上传文件的问题

客户端:sc = (HttpConnection)Connector.open( url, Connector.READ_WRITE, true );sc.setRequestMethod( HttpConnection.POST );sc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")

Bop to the top! 747

J2ME GCF--通用连接框架--图片下载

[code="java"]import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import javax.microedition.io.Connector; import javax.microedition.io.ContentConnection; import javax.microediti...

Sunzone 183

K-java软件测试指南

PDF文档下载 http://wenku.baidu.com/view/8f50da14866fb84ae45c8d2c.html 1.什么是K-JAVA 1.1 K-JAVA简介 1、k-java即J2ME(Java 2 Micro Edition),是专门用于移

学习学习 3147
上一篇: 在Java中基于UDP协议编程
下一篇: J2ME联网中采用序列化机制
mingjava
博客等级 码龄24年 68粉丝 114原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值