Member 10390715 Ответов: 1

Как конвертировать longblob в изображение на php?


Я пишу код добавления данных в mysql с помощью C# со структурой изображения longblob.
А потом я делаю php-скрипт для отображения его в интернете? Но я могу преобразовать longblob в изображение. Я пытаюсь преобразовать двоичный файл в изображение, но это не работает.Как я могу это сделать?
Вот мой код:
private void btn_open_Click(object sender, EventArgs e)
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Filter = "JPG Files(*.jpg)|*.jpg|PNG Files(*.png)|*.png|ALL Files(*.*)|*.*";
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        string picPath = dlg.FileName.ToString();
        txt_path.Text = picPath;
        pictureBox1.ImageLocation = picPath;
    }
}
private void btn_add_Click(object sender, EventArgs e)
{
    try
    {
        // conver to byte
        byte[] imageBt = null;
        FileStream fstream = new FileStream(this.txt_path.Text, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fstream);
        imageBt = br.ReadBytes((int)fstream.Length);
        //kết nối database
        string constring = "Server=localhost;Database=luan_van;Port=3306;User ID=root;Password=";
        string Query = "INSERT into tt_nhanvien (Card_ID,Ma_nv,Ten,Phong_ban,Chuc_vu,Hinh) value ('"+this.txt_ID.Text +"','"+this.txt_ma.Text+"','"+this.txt_ten.Text+"','"+this.txt_pban.Text+"','"+this.txt_chvu.Text+"',@image);";
        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            cmdDataBase.Parameters.Add(new MySqlParameter("@image", imageBt));
            myReader = cmdDataBase.ExecuteReader();
            MessageBox.Show("SAVE");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    catch
    {

    }
}

и PHP код:
<?php
	error_reporting(0);
//$db= mysql_connect("localhost","root","root");
	$db= mysql_connect("localhost","root","");
	if(!$db)
	{
		echo "KHÔNG THỂ KẾT NỐI DATABASE";
		exit;
	}
	//chon csdl
	$db_selected = mysql_select_db("luan_van",$db);
	if(!$db_selected)
	{
		die("Không thể sử dụng DATABASE: ".mysql_error());
	}
	$Ten=$_REQUEST["Ten"];// lấy được tên nhân viên mà người dùng chọn bằng cách lick chuột
	// truy vấn csdl
	$sql= "SELECT * FROM tt_nhanvien WHERE Ten LIKE '$Ten'"; // chỉ chọn đúng tên laptop request
	$result = mysql_query($sql);
	//xuat dữ liệu
	if(mysql_num_rows($result)<>0)
	{
		echo "<table width='800' border='1' align='center'cellpadding='0' cellspacing='0' border='1' style='border-collapse:collapse #FF6600'>";
		while($row = mysql_fetch_row($result))
		{
			$Card_ID= $row[0];
			$Ma_nv = $row[1];
			$Ten = $row[2];
			$Phong_ban = $row[3];
			$Chuc_vu = $row[4];
			$Hinh = "nhan_vien/".$row[5];
			$Hinh = "<img src ='$Hinh' alt='$Ten'>";
			$image_data=file_get_contents($Hinh);
			$encoded_image=base64_encode($image_data);
			$decoded_image=base64_decode($encoded_image);
			echo "<tr><td align='center' colspan='2' bgcolor='#FFEEE6' >$Ten</td></tr>";
			
			echo"<tr>";
			echo"<td align='center' valign='middle'>$decoded_image</td>";
			echo "<td>";
			echo "<table align='center'";
				echo "<tr><td> Card ID:$Card_ID</td></tr>";
				echo "<tr><td> Tên:$Ten</td></tr>";
				echo "<tr><td> Phòng ban:$Phong_ban</td></tr>";
				echo "<tr><td> Mã nhân viên:$Ma_nv</td></tr>";
				echo "<tr><td> Chức vụ:$Chuc_vu</td></tr>";
			echo "</table>";
			echo "</td>";
			echo "<tr align='right'><td><a href='thong_tin_nv.php'> Quay về</a></td></tr>";
			echo "</tr>";	
		}
		echo "</table>";
	}
?>

1 Ответов

Рейтинг:
8

Oso Oluwafemi Ebenezer

Преобразуйте эти байты в вашей базе данных в кодированную строку base64 и отобразите ее таким образом <img src="data:image/jpeg;base64,/9ja/..." />.

Тебе это не нужно. file_get_contents поскольку вы не пытаетесь прочитать данные изображения из URI, у вас уже есть данные изображения.

Я верю $row[5] содержит данные изображения, поэтому код должен быть


$image_data = $row[5];
$encoded_image = base64_encode($image_data);
//You dont need to decode it again.

$Hinh = "<img src='data:image/jpeg;base64,{$encoded_image}' alt=\"$Ten\">";

//and you echo $Hinh
echo $Hinh;
</img>


Member 10390715

Ты очень милый. Большое спасибо!