سؤال

لدي قاعدة بيانات تقوم بتخزين الصور في حقل Blob MySQL. أقوم بإعداد البرنامج النصي الذي يختار ويعرض الصور بناء على معرف في عنوان URL، كما أنني قمت أيضا بذلك إذا قمت بالإلحاق؟ تغيير حجم = 800x600، وسوف تغيير حجم الصورة (في هذه الحالة، إلى 800 × 600).

لا يحتوي المضيف أنني أستخدمه على تثبيت ImageMagick ولن يسمح لي بذلك بنفسي، لذلك أحتاج إلى استخدام مكتبة GD الخاصة ب PHP لتغيير حجم الصورة.
لكنني بعد أن أجد وظيفة مثل وافقيك readImageBlob(), ، لذلك لا يمكنني تحرير السلسلة الثنائية التي أحصل عليها من قاعدة البيانات دون إنشاء ملف مؤقت لأول مرة، وتحريرها، والحصول على السلسلة الثنائية منه، وإرسالها إلى المستعرض، ثم حذفها (وهو waaaay الكثير من الخطوات ، خاصة وأن هذا سيحصل على بضعة آلاف من الزيارات عندما تدخل في الإنتاج).

لذلك سؤالي هو، هل هناك أي طريقة لتكرارها readImageBlob مع GD PHP دون المرور من خلال حل الملف المؤقت؟

هل كانت مفيدة؟

المحلول

imagecreatefromstring () يجب أن تفعل الخدعة. أعتقد أن مثال الوظيفة في الدليل هو بالضبط ما تحتاجه:

$im = imagecreatefromstring($data);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}
else {
    echo 'An error occurred.';
}

أين $data هي سلسلة البيانات الثنائية من قاعدة البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top