فتح وتدوير وتخزين صور Tiff في عمود Blob في قاعدة بيانات MySQL

StackOverflow https://stackoverflow.com/questions/1032994

  •  06-07-2019
  •  | 
  •  

سؤال

مشكلتي هي إلى حد ما مباشرة إلى الأمام:

  1. استرداد صورة من قاعدة بيانات MySQL (المخزنة حاليًا كبيانات ثنائية في عمود blob)
  2. قم بتدوير تلك الصورة بمقدار 90 درجة (باستخدام imagerotate في PHP)
  3. قم بتخزين الصورة مرة أخرى في قاعدة البيانات مع تطبيق تغييرات التدوير هذه.

أواجه مشكلة في العثور على الوظائف التي تسمح لي بحفظ الصورة كمسار بيانات (وليس لنظام الملفات) نظرًا لأنه لا يُسمح لهذه الصور بلمس خادم الويب (وبالتالي سبب وجودها في قاعدة البيانات).أي نصيحة هي موضع ترحيب.

شكرًا

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

المحلول

هل تقوم بتحويل الصورة إلى نوع آخر قبل تدويرها؟لقد قلت أنك تستخدم ملفات tiffs، GD يمكنه قراءة فقط رؤوس صور شجار, ، ستحتاج إلى تحويله أولاً.ربما مع ImageMagick

على الأرجح أنك تريد حفظ الملفات في دليل مؤقت:

  • قاعدة بيانات الاستعلام عن الملف
  • احفظ في الدليل المؤقت (يمكنك حماية الملفات عن طريق تعيين الأذونات إذا لزم الأمر)
  • ادر الصورة
  • أدخل مرة أخرى في قاعدة البيانات
  • حذف الملف المؤقت

نصائح أخرى

حدد البيانات من قاعدة البيانات الخاصة بك.قم بتمرير البيانات إلى imagecreatefromstring()

سيكون لديك الآن مصدر صورة يمكنك الاتصال به imagerotate.

لحفظه مرة أخرى في قاعدة البيانات، ستحتاج إلى إخراجه باستخدام imagepng() / imagejpeg() أو الوظيفة المكافئة لنوع الصورة الذي تستخدمه.يتم إخراج هذه الوظائف إلى المتصفح أو الملف حتى تتمكن من استخدام التخزين المؤقت للإخراج لالتقاط سلسلة لحفظها مرة أخرى في قاعدة البيانات.

ob_start();
imagepng($resource);
$img_data = ob_get_contents();
ob_end_clean();

$img_data يمكن الآن حفظها في قاعدة البيانات.

هذا مجرد مخطط تقريبي ولكن آمل أن أكون قد أوضحت الفكرة.

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