Libvips: يحدد كبار الشخصيات CLI تنسيق الملف مع الأنابيب

تم إنشاؤها على ٦ مايو ٢٠١٦  ·  4تعليقات  ·  مصدر: libvips/libvips

في imagemagick يمكنني القراءة من الأنابيب والكتابة إليها وتحديد تنسيقها:

cat in.jpg | convert JPG:- -resize 50% PPM:- | jpeg-recompress --ppm -q medium - out.jpg

في أدوات vips cli ، يمكنني استخدام / dev / stdin أو / dev / stdout ، ولكن لا يبدو أن هناك طريقة للإشارة إلى تنسيق الملف ، مما يحد من مقدار ما يمكنك إنجازه باستخدام الأنابيب في vips.

سيكون من الرائع لو سمح لكبار الشخصيات بتحديد / تجاوز المحمل / المدخر لصور الإدخال والإخراج.

مثال على بناء الجملة:

cat in.jpg | vips resize -[load=jpeg] -[save=ppm] 0.5 | jpeg-recompress --ppm -q medium - out.jpg

سيسمح هذا أيضًا بتسلسل عمليات cli vips المتعددة دون دفع القرص i / o للكتابة إلى ملفات .v.

enhancement

التعليق الأكثر فائدة

يضاف هذا في 8.9. يمكنك الكتابة على سبيل المثال.

aws s3 cp s3://mybucket/input.jpg - | \
  vips thumbnail_source [descriptor=0] .jpg 128 | \
    aws s3 cp - s3://mybucket/output.jpg

تحتوي ملاحظات الإصدار على مزيد من المعلومات:

https://libvips.github.io/libvips/2019/12/11/ ما الجديد في 8.9.html

ال 4 كومينتر

مرحبًا فيليكس ، لقد تم الحديث عن هذا قليلاً ، حتى أن هناك فرعًا تجريبيًا يدعم التدفقات:

https://github.com/jcupitt/libvips/tree/load-from-stream

يمكنه تشغيل برنامج C هذا:

https://gist.github.com/jcupitt/ff21f5b8d1dd6ba54c6f

يقرأ سلسلة من الصور من مقبس ، ويعالجها ، ويرسلها إلى مقبس آخر ، كل ذلك دون الحاجة إلى تحميل الصورة بأكملها. كان الهدف هو دعم حاويات AWS ، لكنها ستعمل أيضًا مع أنابيب سطر الأوامر ، مع قدر ضئيل من العمل الإضافي.

كانت هناك محادثة طويلة حول هذا الموضوع:

https://github.com/lovell/sharp/issues/30

لقد استسلمت قليلاً ، ثم تراجعت ، ثم حاولت تنظيفه جاهزًا للدمج لإتقان ، وواجهت بعض المشكلات. لا يزال يحتاج إلى مزيد من العمل: /

لم أكن أتحدث عن دفق صور متعددة ، على الرغم من أن ذلك سيكون ميزة رائعة.

الفكرة الرئيسية هي أن تكون قادرًا على ضبط المحمل أو المدخر (أو نوع الملف تقريبًا) ، عندما لا يمكن استنتاجه من امتداد الملف. أنا متأكد من أن هناك المزيد من المشكلات لأنواع الملفات التي تتطلب البحث ، ولكن على سبيل المثال. jpeg، png، ppm ستعمل بشكل جيد. قد يكون هذا مفيدًا أيضًا ، عند وجود تطبيقات متعددة يمكنها إرسال أو تحميل نفس نوع الملف. على سبيل المثال ، يمكن تحميل PDF مع pdfload أو magickload.

أعتقد أنك بحاجة إلى مواد البث من أجل / dev / stdin للعمل. على سبيل المثال ، هذا فشل:

$ cat k2.jpg | vips jpegload /dev/stdin x.jpg
VipsJpeg: Not a JPEG file: starts with 0x87 0xe5
...

يتوقع محملو الملفات أن يكونوا قادرين على فتح مدخلاتهم عدة مرات. ستضيف المواد المتدفقة مخزنًا مؤقتًا للقراءة يجعل ذلك ممكنًا - فالعديد من الصور من شيء البث هي مجرد مكافأة.

يضاف هذا في 8.9. يمكنك الكتابة على سبيل المثال.

aws s3 cp s3://mybucket/input.jpg - | \
  vips thumbnail_source [descriptor=0] .jpg 128 | \
    aws s3 cp - s3://mybucket/output.jpg

تحتوي ملاحظات الإصدار على مزيد من المعلومات:

https://libvips.github.io/libvips/2019/12/11/ ما الجديد في 8.9.html

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات