كيف تقرأ بيانات الصورة في من برنامج مثل صورة ماغيك في جافا؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا أعمل مع يماغيماغيك وأنا أتساءل ما هي أفضل طريقة لقراءة بيانات الصورة في من المعياري للعملية يماغيماغيك.

وأنا على استدعاء الأمر لعملية مثل ذلك: / الأراضي الفلسطينية المحتلة / المحلية / بن / تحويل -resize 8000 @ - -

وثم الأنابيب صفيف بايت إلى عملية للمعالجة.

ما هي أفضل طريقة لقراءة البيانات من عملية من هذا القبيل؟

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

المحلول

وأنت قد ترغب في النظر في أباتشي العموم اكسيك هذا يمنحك وسيلة جيدة من التشغيل التنفيذية وتمرير النتائج في جاوة.

وانها مماثلة لاستخدام أسلوب المذكورة مايكل إلا أن تسمح لك المزيد من التحكم.

وهناك بعض الأمثلة الجيدة للاستخدام في تعليمي الصفحة.

نصائح أخرى

ونريد فقط لمرحلة ما بعد نموذج التعليمات البرمجية باستخدام يماغيماغيك عبر المشاعات أباتشي إكسيك للتأكد من اكتمالها

    try {

        StringBuffer sb = new StringBuffer();
        sb.append(this.validPathToImageMagickCommand);
        sb.append('\u0020');
        for (int i = 0; i < args.size(); i++) {
            String s = args.get(i);
            sb.append(s);
        }


        CommandLine cl = CommandLine.parse(sb.toString());

        PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(output, System.err, new ByteArrayInputStream(inputBytes));
        byAs = new ByteArrayInputStream(inputBytes);
        pumpStreamHandler.setProcessOutputStream(byAs);

        DefaultExecutor executor = new DefaultExecutor();
        executor.setStreamHandler(pumpStreamHandler);
        int exitValue = executor.execute(cl);

        outputBytes = output.toByteArray();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (byAs != null)
                byAs.close();

            if (output != null)
                output.close();

        } catch (IOException e) {
            System.out.println(e);
        }

    }

وطريقة Runtime.exec() بإرجاع Process التي لديها وسائل للحصول على المدخلات والمخرجات والخطأ تيارات عملية الاحتجاج.

وأنا لا أتساءل كيف تمكنت من "أنبوب صفيف بايت لعملية" بأي طريقة أخرى.

ملحوظة التي سيكون لديك لاستخدام المواضيع متعددة لمعالجة المدخلات والمخرجات من عملية لدت لأنها ستمنع إذا حاولت "الأنابيب في" الكثير من المدخلات دون قراءة أي إخراج.

إذا كنت لا تريد استخدام Runtime.exec ()، يرجى مراجعة <لأ href = "https://stackoverflow.com/questions/609762/need-sample-java-code-to-run-a-shellscript" > هذا السؤال كما runtime.exec () يمكن أن تكون صعبة بعض الشيء.

وسوف تكون الرغبة في تغيير StreamGobbler لOUTPUT إلى شيء مخازن المعياري في صفيف أو بعض من هذا القبيل. والبدء في المواضيع قبل القيام WAITFOR () لمنع، كما قال مايكل، ومنع.

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