2017-07-31 31 views
1

我用下面的代碼轉換了我的圖像,這將返回我的圖像的base64,但問題是,當我將它們上傳到服務器時,我只看到白色圖像 - 你能否告訴我更好的方法來將圖像轉換爲base64或者這是我選擇這裏 最好的辦法是轉換圖像的base64爲什麼圖像的base64格式在swift 3中是白色的?

func base64(from image: UIImage) -> String? { 
    UIGraphicsBeginImageContext(image.size) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    let imageData = UIImageJPEGRepresentation(image!, 1.0) 
    if let imageString = imageData?.base64EncodedString(options: .endLineWithLineFeed) { 
     return imageString 
    } 
    return nil 
} 
+0

一兩件事你可以做的是從中產生以base64字符串構成圖象回來,如果工作檢查壓縮圖像並檢查字符串是否正確發送,因爲base64字符串是s ize太大。 – YaBoiSandeep

回答

0

,因爲沒有什麼是在當前上下文得出它是白色的!

你只是UIGraphicsBeginImageContext與大小

UIGraphicsGetImageFromCurrentImageContext

它會永遠給你一個白色圖像獲取和有使用Base64

沒有關係

如果你想呈現的東西,然後用像低於

 yourImageView.layer.render(in: UIGraphicsGetCurrentContext()!) 

以及之後從currentContext獲取圖像

編輯

func base64(from image: UIImage) -> String? { 
    UIGraphicsBeginImageContext(image.size) 
    image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    let imageData = UIImageJPEGRepresentation(image!, 1.0) 
    if let imageString = imageData?.base64EncodedString(options: .endLineWithLineFeed) { 
    return imageString 
    } 
    return nil 
    } 
+0

swift說UIImage的值沒有成員層 –

+0

這不是UIImage它應該是UIImageView –

+0

我有一個UIImage數組而不是圖像視圖 –

1

試試這個方法:

func convertImageToBase64(_ image:UIImage) -> String 
    { 
    let imageData = UIImageJPEGRepresentation(image, 1)//get imageData from image 
    if(imageData != nil) 
    { 
     let Strbase64 = imageData?.base64EncodedString(options: .endLineWithCarriageReturn)//encode imageData 
     return Strbase64!//return encoded string 
    } 
    return "" 
    } 
+0

這個代碼將工作,但是當我在服務器上載兩個圖像只是第一個圖像是存在第二圖像是在服務器中卻是0 KB –

+0

我想你需要一些延遲後轉換爲Base64和再轉換第二圖像 –

+0

不,你轉換爲base64時不需要任何延遲。這個關於第二張圖像是空圖像的問題可能是完全不相關的。 – Rob

1

你通過了UIImage這種方法,但從來沒有用它做了什麼,而是用UIGraphicsGetImageFromCurrentImageContext創建了一個新UIImage,但你從來沒有畫過任何東西。這就是爲什麼產生的圖像是白色的。

但你根本不需要那些UIGraphics調用。只要抓住你傳入此方法的UIImage的JPEG表示,並將其轉換爲一個基地64編碼字符串:

func convertImageToBase64(_ image: UIImage) -> String? { 
    return UIImageJPEGRepresentation(image, 1)?.base64EncodedString() 
} 
+0

這不是工作仰望就像我在其他問題評論說,答案是工作,但不超過一個圖像 –

+0

,多個圖像的問題不是該轉換爲base64。以上是你如何做轉換,並沒有太多的。多重圖像問題或者是如何抓住這些多個「UIImage」引用,或者如何保存它們或者類似的東西。但是,在您的問題中,您沒有提供足夠的信息來幫助我們診斷這種次要的多重圖像問題。 – Rob

+0

@SaeedRahmatolahi - 順便說一句,在註釋中另一個答案,你說你從手機拍照。如果使用'UIImagePickerController',例如,它是低效率的搶'UIImage'目的,將它們轉換爲'Data' /'NSData',然後做底座64的轉換。通常你會想抓住原來'Data' /'NSData'資產(如https://stackoverflow.com/a/32938728/1271826)。但沒有更多的上下文,我們無法幫助你。 – Rob

0

首先請檢查是否你所面對的錯誤是從你的應用程序或服務器端。您可以選擇網的base64到圖像轉換.Copy您的base64字符串,並首先檢查他們,你可以選擇此鏈接

https://codebeautify.org/base64-to-image-converter

相關問題