PDA

View Full Version : فوری فوری: اینکود فایل PNG



PHP Assistant
دوشنبه 16 خرداد 1390, 16:43 عصر
سلام. در برخی از سایت برای نمایش فایل PNG اون رو با base64 اینکود می کنن. آدرس عکس هم به این صورت در میاد:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAABkCAYAAAB w4ZfNAAAgAElEQVR4nOy9d3hVVdr+f6cTei8qooAVO+qgoqMiN uwzlrFgQ6yMdURRIYoiiqiAIkEwEJKc/dzPPgkhikoLIk الی آخر...

من هم چه جوری می تونم این کار رو بکنم؟ خیلی فوریه

eshpilen
دوشنبه 16 خرداد 1390, 20:29 عصر
یه مثال از مقالهء ویکیپدیا:

<?php
function data_uri($file, $mime)
{
$contents = file_get_contents($file);
$base64 = base64_encode($contents);
return ('data:' . $mime . ';base64,' . $base64);
}
?>

<img src="<?php echo data_uri('elephant.png','image/png');
?>" alt="An elephant" />

منبع: http://en.wikipedia.org/wiki/Data_URI_scheme

ظاهرا این روش بیشتر درمورد فایلهای کوچک انجام میشه؛ چون بعضی نسخه های بعضی مرورگرها در این ارتباط محدودیت حجمی دارن (IE8 حداکثر تا 32 KB). ضمنا مشکل ساپورت بعضی مرورگرها مثل IE7 هم هست مثل اینکه (این مرورگر 15% سهم مرورگرها رو داره).

این روش باعث میشه تعداد ارتباطات HTTP مورد نیاز کاهش پیدا کنه. این مسئله درمورد صفحات https موثرتر هم میشه چون این صفحات برای هر فایل تعداد بیشتری ارسال و دریافت http نیاز دارن.
ولی بهرحال این روش هم مزایا و معایب خودش رو داره و نباید در استفاده ازش افراط کرد. جایی که واقعا مناسب و عملا مفید هست استفاده کنید.