導航:首頁 > 編程語言 > 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相關的資料

熱點內容
怎麼查看u盤加密區 瀏覽:181
台電加密是什麼格式 瀏覽:155
php論壇版塊在哪個文件夾 瀏覽:442
暗黑的伺服器為什麼維護 瀏覽:623
android內存溢出的原因 瀏覽:17
標志307的壓縮比是多少 瀏覽:636
伺服器啟動為什麼叫三聲 瀏覽:997
追風箏的人英文pdf 瀏覽:939
解壓小熊手機殼 瀏覽:346
成都市區建成面積演算法 瀏覽:660
智能家居單片機 瀏覽:97
買男裝用什麼app好 瀏覽:855
文件夾合並了怎麼拆開 瀏覽:260
波段副圖源碼無未來函數 瀏覽:89
livecn伺服器地址 瀏覽:259
程序員這個工作真的很吃香嗎 瀏覽:847
程序員和數學分析師待遇 瀏覽:681
壓縮氣彈簧怎麼拆 瀏覽:325
華為公有雲伺服器添加虛擬ip 瀏覽:211
程序員和運營哪個累 瀏覽:27