cashloveyou
@cashloveyou
Хороший чел

Раскодировать base64 изображение из БД?

Добрый день занимаюсь переносом сайта (бд) на новую cms , в старой cms изображения хранились в формате base64 при выводе раскодировались с данными функциями
if ($feed['photos']) {
		$photos = @perfectUnserialize($feed['photos']);
		$images = array();
		if ($photos) {
			foreach ($photos as $id => $pPath) {
				try {
					if (stripos(get_headers(url_img($pPath, 920))[0], "200 OK")) $images[$id] = $pPath;
				} catch (Exception $e) {
					$images[$id] = $pPath;
				}
			}
			$feed['images'] = $images;
			if (empty($feed['link_details']) && empty($feed['feed_content']) && empty($feed['images']) && empty($feed['video']) && empty($feed['files'])) $feed['empty'] = true;
		}
	}

if(!function_exists('perfectSerialize')) {
	function perfectSerialize($string) {
		return base64_encode(serialize($string));
	}
}

if(!function_exists('perfectUnserialize')) {
	function perfectUnserialize($string) {

		if(base64_decode($string, true) == true) {

			return @unserialize(base64_decode($string));
		} else {
			return @unserialize($string);
		}
	}
}


Но на новой cms такого нет изображения в бд хранятся обычным путем к картинке
имеют функцию , как с данной функцией можно раскодировать base64 формат из бд в нормальный путь
function Wo_GetMedia($media) {
    global $wo;
    $media = str_replace('%w', '200', $media);

    if (empty($media)) {
        return '';
    }
    if ($wo['config']['amazone_s3'] == 1) {
        if (empty($wo['config']['amazone_s3_key']) || empty($wo['config']['amazone_s3_s_key']) || empty($wo['config']['region']) || empty($wo['config']['bucket_name'])) {
            return $wo['config']['site_url'] . '/' . $media;
        }
        return $wo['config']['s3_site_url'] . '/' . $media;
    }
    return  $wo['config']['site_url'] . '/' . $media;
}
  • Вопрос задан
  • 457 просмотров
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
просто их нужно сложить в виде файлов по нужным путям
Ответ написан
@Kirill-Gorelov
С ума с IT
Если я правильно понял задачу, тебе надо картинку в формате base64 совмести в уже существующими путями в новой БД???
Я как понимаю у тебя id кратинок совпадает в двух БД?
Если да, то отлично. Я вижу такой вариант.

Берешь картинку в base64 делаешь из нее файл, кладешь ее и переименовываешь по тому пути которому нужно. То есть берешь путь картинки в новой БД и фактический создаешь новую картинки с нужным именем и ее расположением.

Тебе осталось придумать взять одну и туже картинку в base64 и нужную запись из двух новой бд. И сохранить.

Сохранить можно так
//морально устаревший вариант
 $decoded = base64_decode($src);
    $fp = fopen($filename ,'w');
    fwrite($fp, $decoded);
    fclose($fp);
 // и новый
 $decoded = base64_decode($src);
file_put_content( $decoded);


Дальше эту картинку переменовываешь и кладешь в нужную тебе папку.

p.s. если я правильно понял твою проблему и задачу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы