Получить размер изображения в кодировке base64 PHP [duplicate]

Вам нужно использовать правильную процедуру quicksort, так как Hoare разбивает массив на левую часть и правую часть, в отличие от Lomuto, которая разбивает массив на левую часть, поворот, правую часть.

algorithm quicksort(A, lo, hi) is
    if lo < hi then
        p := partition(A, lo, hi)
        quicksort(A, lo, p)        // not quicksort(A, lo, p-1)
        quicksort(A, p + 1, hi)

также выбирая точку опоры в середине означает, что уже отсортированы или обратный отсортированный массив отсортирован быстро в противоположность худшему:

    pivot := A[lo+(hi-lo)/2]  // or := A[(lo+hi)/2] if overflow not an issue

Там все равно будет хуже моделей случае, но, по крайней мере, простые из них являются обрабатываются. Медиана 3 немного медленнее, но уменьшает количество наихудших шаблонов:

    md = lo + (hi-lo)/2
    if (A[lo] > A[hi])
        swap(A[lo], A[hi])
    if (A[lo] > A[md])
        swap(A[lo], A[md])
    if (A[md] > A[hi])
        swap(A[md], A[hi])
    pivot := a[md]

Возможно, то, что вы ищете, - это быстрый выбор, чтобы найти k-й элемент, где k = размер массива / 2. Он похож на быстрый вид, но он рекурсивно ищет только левую или правую часть массива, содержащего k-ый элемент. Статья в вики:

http://en.wikipedia.org/wiki/Quickselect

6
задан synonym 21 March 2011 в 04:30
поделиться

4 ответа

strlen(base64_decode($encoded_data));

И как основное правило, кодировка base64 увеличивает исходные данные в размере примерно на 33%

14
ответ дан Marc B 18 August 2018 в 00:05
поделиться

Используйте следующий код:

function getFileSizeInKb($base64string){
    $bytes = strlen(base64_decode($base64string));
    $roughsize = (((int)$bytes) / 1024.0)* 0.67;
    return round($roughsize,2);
}
-1
ответ дан imal hasaranga perera 18 August 2018 в 00:05
поделиться

Если вы хотите знать размер без декодирования, я считаю, что следующие работы:

$size = (int) (strlen(rtrim($data, '=')) * 3 / 4);

Или:

$size = (strlen($data) * 3 / 4) - substr_count(substr($data, -2), '=');

В противном случае просто используйте strlen() на декодированные данные, как указано в Marc.

9
ответ дан Matthew 18 August 2018 в 00:05
поделиться

Попробуйте это, вы получите размер в байтах, KB и MB тоже ..

public function getBase64ImageSize($base64Image){ //return memory size in B, KB, MB
    try{
        $size_in_bytes = (int) (strlen(rtrim($base64Image, '=')) * 3 / 4);
        $size_in_kb    = $size_in_bytes / 1024;
        $size_in_mb    = $size_in_kb / 1024;

        return $size_in_mb;
    }
    catch(Exception $e){
        return $e;
    }
}
2
ответ дан Shahrukh Anwar 18 August 2018 в 00:05
поделиться
Другие вопросы по тегам:

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