导航:首页 > 编程语言 > javabyte转bitmap

javabyte转bitmap

发布时间:2022-06-24 17:17:53

‘壹’ java 把一个网络图片转换为base64

这个简单啊
(1)把获取url流转为bitmap
(2)把bitmap再转为base64
public static Bitmap getBitMBitmap(String urlpath) {
Bitmap map = null;
try {
URL url = new URL(urlpath);
URLConnection conn = url.openConnection();
conn.connect();
InputStream in;
in = conn.getInputStream();
map = BitmapFactory.decodeStream(in);
// TODO Auto-generated catch block
} catch (IOException e) {
e.printStackTrace();
}
return map;
}

第二步
/**
* bitmap转为base64
* @param bitmap
* @return
*/
public static String bitmapToBase64(Bitmap bitmap) {

String result = null;
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

baos.flush();
baos.close();

byte[] bitmapBytes = baos.toByteArray();
result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
有什么问题提问就好

‘贰’ java中的Bitmap类型通过jni传进cpp后如何转换成IPLImage*类型呢谢谢!

JNI 的基本问题就是解决 Java 和 C++ 代码互相调用的通信问题,在 C++ 代码编写过程中最大的问题莫过于适应其中的代码编写规则,C++调用或是返回的内容必须遵守 JVM 和 C++ 代码的通信规则。
C++ 调用 Java 的一般步骤如下:
获得类:
jclass cls = env->FindClass("com/ldq/Student");
cls 可认为是类的句柄
"com/ldq/Student" 就是类文件,注意不能用 "com.ldq.Student"
获得方法:
jmethodID mid = env->GetMethodID(cls,"<init>","()V");
以上为构造函数,参数是 "<init>" "()V"
jmethodID mid = env->GetMethodID(cls,"getAge","()I");
以上为类的方法,第一个参数是类句柄,第二个参数是方法名字,第三个参数是签名标识

Java类型
符号

boolean Z

byte
B

char
C

short S
int I
long L
float F

double
D

void
V

objects对象 Lfully-qualified-class-name; L类名;
Arrays数组 [array-type [数组类型
methods方法 (argument-types)return-type(参数类型)返回类型
获得对象:
jobject obj=env->NewObject(cls,mid);
以上便获得了一个对象的句柄
获得对象成员变量:
jfieldID fid=env->GetFieldID(cls,"age","I");
以上和获得类方法差不多
操作成员变量:
jint a=env->GetIntField(obj,mid);
age=age+10;
env->SetIntField(obj,fid,a);
返回:
return obj;
下面是本人练习的例子
ExList.java
Java代码
package com.ldq.list;

import java.util.List;

public class ExList {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-------WifiManager.test()");
System.out.println(WifiManager.test());

System.out.println("-------WifiManager.testArray()");
String[] s1 = WifiManager.testArray();
for (int i = 0; i < s1.length; i++) {
System.out.println(s1[i]);
}

System.out.println("-------WifiManager.testObject()");
System.out.println(WifiManager.testObject().ssid);
System.out.println(WifiManager.testObject().mac);
System.out.println(WifiManager.testObject().level);

System.out.println("-------WifiManager.getScanResultsA()");
ScanResult[] s2 = WifiManager.getScanResultsA();
for (int i = 0; i < s2.length; i++) {
System.out.println(s2[i].ssid);
System.out.println(s2[i].mac);
System.out.println(s2[i].level);
}

System.out.println("-------WifiManager.getScanResults()");
List<ScanResult> list = WifiManager.getScanResults();
System.out.println(list.get(0).ssid);
System.out.println(list.get(0).mac);
System.out.println(list.get(0).level);

}
}
package com.ldq.list;import java.util.List;public class ExList { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("-------WifiManager.test()"); System.out.println(WifiManager.test()); System.out.println("-------WifiManager.testArray()"); String[] s1 = WifiManager.testArray(); for (int i = 0; i < s1.length; i++) { System.out.println(s1[i]); } System.out.println("-------WifiManager.testObject()"); System.out.println(WifiManager.testObject().ssid); System.out.println(WifiManager.testObject().mac); System.out.println(WifiManager.testObject().level); System.out.println("-------WifiManager.getScanResultsA()"); ScanResult[] s2 = WifiManager.getScanResultsA(); for (int i = 0; i < s2.length; i++) { System.out.println(s2[i].ssid); System.out.println(s2[i].mac); System.out.println(s2[i].level); } System.out.println("-------WifiManager.getScanResults()"); List<ScanResult> list = WifiManager.getScanResults(); System.out.println(list.get(0).ssid); System.out.println(list.get(0).mac); System.out.println(list.get(0).level); }}

‘叁’ java中如何让byte[]与string类型转换后,保持不变

String.getBytes()是取决于本地缺省编码的,两边不一样就抓瞎了。你这种情况其实是要传byte[],这样硬生生转成String总觉得太危险,一般的做法是弄成比如Base64这样的7bits编码。现成的有sun.misc.BASE64Encoder和sun.misc.BASE64Decoder。

‘肆’ JAVA int数组转bitmap问题

先看 int数组是什么值 。。。。。。
简单地,可以使用BufferedImage的

void
setRGB(int x,
int y,
int rgb)
Sets a pixel in this BufferedImage to the specified
RGB value.

‘伍’ android ,base64转bitmap

1 把图像文件读如byte数组中。
2 然后调用EncodeBase64函数,把Byte数组传入,函数返回Base64的字符串。
以上即可完成Base64转换。

反方向
1 然后调用DecodeBase64函数,把Byte64字符串传入,函数返回Byte数组。
2 把Bye数组内容写入文件,文件名为bitmap位图的bpm文件即可。

‘陆’ android bitmap.getpixels怎么会是负的

在 Java中,JavaVM拥有自动管理内存的功能,Java的GC能够进行垃圾回收,但是如果ImageView使用过多的Bitmap的话,经常会报OOM(内存溢出)。

造成内存溢出及解决方案:
使用BitmapFactory.decodeStream替代createBitmap方法原因是该方法直读取图片字节,调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap。
使用压缩读取技术BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;</ol> BitmapFactory.decodeFile(imageSdUri, options); final int height = options.outHeight; final int width = options.outWidth; options.inSampleSize = 1; int w = 320; int h = 480; h = w*height/width;//计算出宽高等比率 int a = options.outWidth/ w; int b = options.outHeight / h; options.inSampleSize = Math.max(a, b); options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);
3.及时释放Bitamp
Bitmap对象在不使用时,我们应该先调用recycle()释放内存,然后才它设置为null.虽然recycle()从源码上看,调用它应该能立即释放Bitmap的主要内存,但是测试结果显示它并没能立即释放内存。但是我它应该还是能大大的加速Bitmap的主要内存的释放。

‘柒’ 如何把byte转换成base64的byte

由于该问题没有标明是java或者是android的,以下我的解决方法:

android:

byte[]result=Base64.encode(key,Base64.DEFAULT);

其中key 的类型是byte[].此方法是android自带的装换方法。

如果感觉 byte[] result 很不直观,可以使用 new String(result) 方法转化成 字符串类型进行输出。

java语言(不多说说明了,底下代码写的很详细):

//定义一个BASE64Encoder
BASE64Encoderencode=newBASE64Encoder();
//将byte[]转换为base64
Stringbase64=encode.encode("五笔字型电子计算机".getBytes());
//输出base64
System.out.println(base64);
//新建一个BASE64Decoder
BASE64Decoderdecode=newBASE64Decoder();
//将base64转换为byte[]
byte[]b=decode.decodeBuffer(base64);
//输出转换后的byte[]
System.out.println(newString(b));}
阅读全文

与javabyte转bitmap相关的资料

热点内容
程序员接私活初级 浏览:431
全无油润滑压缩机 浏览:183
代码加密常用方法 浏览:952
安卓手机如何解除已禁用 浏览:396
算法的随机性 浏览:485
高中解压体育游戏 浏览:533
androidstudior丢失 浏览:345
命令行笔记 浏览:737
360目标文件夹访问拒绝 浏览:518
3b编程加工指令 浏览:789
c8051f系列单片机选型手册 浏览:772
南昌php程序员 浏览:512
bcs命令 浏览:446
如何在服务器指向域名 浏览:417
车床编程可以做刀吗 浏览:519
ln命令源码 浏览:792
用粘液做解压手套 浏览:331
icloud收信服务器地址 浏览:500
编程思考者 浏览:453
压缩机型号用什么氟利昂 浏览:553