- Home /
Question by
lotus_designz · Jun 22, 2021 at 12:34 AM ·
imagesqliteblob
Image showing as question mark after loading from SQLite database
I'm trying to save an image that a user will upload into an SQLite database, and will be able to view it as a card. The problem is, when I load the image from the database it shows up as a question mark.
This is the code to save the image into the database:
public void SaveCard()
{
Texture2D newTex = new Texture2D(IMG_source.sprite.texture.width, IMG_source.sprite.texture.height);
TXT2D_cardArt = IMG_source.sprite.texture;
byte[] bytes = TXT2D_cardArt.GetRawTextureData();
newTex.LoadImage(bytes, false);
newTex.Apply();
byte[] newByte = newTex.EncodeToPNG();
string base64Str = Convert.ToBase64String(newByte);
string sqlString =
"INSERT INTO " + dbName +
"(CardName, CardDescription, CardImage)" +
"VALUES (?, ?, ?)";
dbManager.Execute(sqlString, IF_cardName.text, IF_cardDesc.text, base64Str);
IF_cardName.text = "";
IF_cardDesc.text = "";
IMG_source.sprite = null;
}
And this is the code I'm using to view the card, but it's not the final code. It's just used to test if the card will be shown successfully:
public void ViewCard()
{
string sqlString = "SELECT * FROM " + dbName;
List<DeckORM> deckContents = dbManager.Query<DeckORM>(sqlString);
foreach (DeckORM dorm in deckContents)
{
byte[] bytes = Convert.FromBase64String(dorm.CardImage);
IF_cardName.text = dorm.CardName;
IF_cardDesc.text = dorm.CardDescription;
Texture2D tex = new Texture2D(IMG_show.sprite.texture.width, IMG_show.sprite.texture.height);
tex.LoadImage(bytes);
tex.Apply();
IMG_show.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 0), 100);
}
}
Comment
Your answer
Follow this Question
Related Questions
SQLite, BLOB and UI Image 2 Answers
loading image as a blob from Sqlite,loading image from Sqlite 1 Answer
How to save blob in bytes to sqlite 0 Answers
Storing blob in SQLite 1 Answer
Array to blob 0 Answers