Предложите некоторые большие веб-сайты для программиста.NET

Я только что написал нужные методы декодирования / кодирования; матрица выглядит иначе, потому что я создал входной QR-код с помощью приложения QR Droid и выходной QR-код с помощью ZXing , который может использовать другой уровень исправления ошибок; тем не менее оба имеют один и тот же целевой URL, который является моим.

Зависимости происходят из репозиториев google() и mavenCentral():

dependencies {

    implementation "androidx.appcompat:appcompat:1.0.2"

    // https://mvnrepository.com/artifact/com.google.zxing
    implementation "com.google.zxing:core:3.3.3"
    implementation "com.google.zxing:android-core:3.3.0"
}

Используемый ресурс макета:




    

    


И манипуляции с BitMatrix; где метод encode() должен быть достаточным при наличии String в наличии; просто добавил оба метода ради полного примера (он читает Bitmap из одного AppCompatImageView, а затем записывает в другой AppCompatImageView):

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;

import androidx.annotation.ColorInt;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageView;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;

public class MainActivity extends AppCompatActivity {

    private AppCompatImageView mInputImage;
    private AppCompatImageView mOutputImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.layout_main);

        this.mInputImage = this.findViewById(R.id.inputImage);
        this.mOutputImage = this.findViewById(R.id.outputImage);

        Bitmap bitmap = ((BitmapDrawable) this.mInputImage.getDrawable()).getBitmap();
        String data = this.decode(bitmap);

        bitmap = this.encode(data, bitmap.getWidth(), bitmap.getHeight(), 0xFFFFD034,0xFF06425C);
        this.mOutputImage.setImageBitmap(bitmap);
    }

    private String decode(Bitmap bitmap) {

        String data = null;
        MultiFormatReader reader = new MultiFormatReader();
        int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()];
        bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
        LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
        BinaryBitmap binary = new BinaryBitmap(new HybridBinarizer(source));

        try {
            Result result = reader.decode(binary);
            data = result.getText();
        } catch (NotFoundException e) {
            e.printStackTrace();
        }

        Log.d("ZXing", "decoded: " + data);
        return data;
    }

    private Bitmap encode(String contents, int width, int height, @ColorInt int foreground, @ColorInt int background) {

        MultiFormatWriter writer = new MultiFormatWriter();
        BitMatrix matrix = null;
        Bitmap bitmap = null;

        try {
            matrix = writer.encode(contents, BarcodeFormat.QR_CODE, width, height);
        } catch (WriterException e) {
            e.printStackTrace();
        }

        if(matrix != null) {
            int[] pixels = new int[width * height];
            for (int y = 0; y < height; y++) {
                int offset = y * width;
                for (int x = 0; x < width; x++) {
                    pixels[offset + x] = matrix.get(x, y) ? foreground : background;
                }
            }
            bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        }

        return bitmap;
    }
}

Результат выглядит примерно так; где левая является входной матрицей, а правая является выходной матрицей:

QR Codes, Input & Output Matrix

5
задан halfer 13 May 2018 в 20:43
поделиться

12 ответов

Я только что нашел: "Как мне?" видео .

10
ответ дан 18 December 2019 в 05:33
поделиться

Хорошие блоги о C # /. Net:

6
ответ дан 18 December 2019 в 05:33
поделиться

Многие хорошие ресурсы уже перечислены.

Если вы ищете статьи, Code Code - хороший сайт для частых посещений.

6
ответ дан 18 December 2019 в 05:33
поделиться

Я предлагаю вам попробовать и прочитать блог ScottGu как можно чаще, чтобы быть в курсе последних событий в мире .Net

2
ответ дан 18 December 2019 в 05:33
поделиться
2
ответ дан 18 December 2019 в 05:33
поделиться

Вот некоторые из них, которые могут помочь вам начать:

Следующее не относится к сетевым ресурсам, но кое-что вы можете рассмотреть:

  • Если вы можете себе это позволить, посмотрите на Amazon книгу по .NET, посмотрите на звезды обзора, чтобы определить, какие из них хороши.
  • Посмотрите Шаблоны проектирования C # - Джеймсу Куперу для понимания шаблонов GOF в C #

Не бойтесь посетить CodePlex и найти приложение, которое, возможно, вас интересует, и загрузить исходный код.

Запустите приложение в режиме отладки, чтобы понять, как оно работает. Вы также можете сделать поиск в Google для проектов с открытым исходным кодом на C #, чтобы еще больше улучшить свое обучение.

Удачи в обучении

1
ответ дан 18 December 2019 в 05:33
поделиться

Если вы заинтересованы в производительности, посетите блог Маони, чтобы узнать, как работает GC

http://blogs.msdn.com/maoni/

1
ответ дан 18 December 2019 в 05:33
поделиться

DotNetKicks - это хорошая совокупность различных сообщений в блогах, связанных с .NET, и других новостей. Он не предназначен специально для новых пользователей, но определенно много полезного контента на многие темы. Это также довольно своевременно, поэтому я считаю, что это хороший ресурс для того, чтобы оставаться в курсе последних технологий и дискуссий в мире .NET.

1
ответ дан 18 December 2019 в 05:33
поделиться

Существует бесплатная документация по C #, только для основ:

Galileo Openbook - Visual C # 2008

Для меня это в основном google.com для запуска с: -)

1
ответ дан 18 December 2019 в 05:33
поделиться

Я бы сказал, что плохих больше, чем хороших.

: (

Лично я обычно придерживаюсь MSDN и читаю официальные блоги / сообщения от групп разработчиков.

-3
ответ дан 18 December 2019 в 05:33
поделиться

Только расширенный (или необычный) материал для ASP.Net, C # и SQL Server http://blog.DigitalTools.com

1
ответ дан 18 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: