في 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.
مرحبًا فيليكس ، لقد تم الحديث عن هذا قليلاً ، حتى أن هناك فرعًا تجريبيًا يدعم التدفقات:
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
التعليق الأكثر فائدة
يضاف هذا في 8.9. يمكنك الكتابة على سبيل المثال.
تحتوي ملاحظات الإصدار على مزيد من المعلومات:
https://libvips.github.io/libvips/2019/12/11/ ما الجديد في 8.9.html