Heim > Web-Frontend > View.js > Hauptteil

Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?

WBOY
Freigeben: 2023-08-17 12:25:47
Original
1268 Leute haben es durchsucht

Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?

Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?

Bei der Front-End-Entwicklung ist es häufig erforderlich, einige Spezialeffektverarbeitungen an Bildern durchzuführen, z. B. die Konvertierung von Bildern in Graustufen oder Schwarzweiß. In Vue können wir einige einfache Techniken verwenden, um diese Effekte zu erzielen. In diesem Artikel wird erläutert, wie die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue implementiert wird, und es werden entsprechende Codebeispiele beigefügt.

Graustufenverarbeitung

Bei der Graustufenverarbeitung werden Farbbilder in Schwarzweißbilder umgewandelt, sodass die Bilder nur Graustufeninformationen und keine Farbinformationen enthalten. Das Folgende ist ein Codebeispiel zum Implementieren der Graustufenverarbeitung in Vue:

<template>
  <div class="container">
    <img  :src="originalImage" class="original" @load="convertToGrayscale" alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" >
    <img  :src="grayscaleImage" class="grayscale" v-show="grayscale" alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" >
  </div>
</template>

<script>
export default {
  data() {
    return {
      originalImage: 'path/to/original/image.jpg',
      grayscaleImage: '',
      grayscale: false
    };
  },
  methods: {
    convertToGrayscale() {
      let canvas = document.createElement('canvas');
      let ctx = canvas.getContext('2d');
      let img = document.querySelector('.original');
      canvas.width = img.width;
      canvas.height = img.height;
      ctx.drawImage(img, 0, 0);
      let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
      let data = imageData.data;
      for (let i = 0; i < data.length; i += 4) {
        let brightness = (data[i] + data[i + 1] + data[i + 2]) / 3;
        data[i] = brightness;
        data[i + 1] = brightness;
        data[i + 2] = brightness;
      }
      ctx.putImageData(imageData, 0, 0);
      this.grayscaleImage = canvas.toDataURL();
      this.grayscale = true;
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.original, .grayscale {
  max-width: 300px;
}

.grayscale {
  display: none;
}
</style>
Nach dem Login kopieren

Im obigen Code binden wir ein Bild über das Attribut src des Tags <img alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" > Originales Farbbild. Wenn das Bild geladen ist, verwenden Sie die Methode convertToGrayscale, um das Bild in Graustufen zu konvertieren. In der Methode erstellen wir ein canvas-Element, erhalten den Kontext der Leinwand über getContext('2d') und zeichnen dann das Originalbild auf die Leinwand. Als nächstes rufen wir die Pixeldaten auf der Leinwand ab, wandeln den RGB-Wert jedes Pixels in einen Helligkeitswert um, aktualisieren dann den RGB-Wert in den Pixeldaten auf einen Helligkeitswert und fügen schließlich die aktualisierten Pixeldaten wieder in die Leinwand ein. Schließlich wird die Leinwand durch Aufrufen der Methode toDataURL in die Base64-Kodierung des Bildes konvertiert und an das Attribut src des Graustufenbilds gebunden. <img alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" >标签的src属性绑定了一张原始彩色图片。当图片加载完毕后,通过convertToGrayscale方法将图片转换为灰度图。方法中,我们通过创建一个canvas元素,并通过getContext('2d')获取画布的上下文,然后绘制原始图片到画布中。接下来,我们获取画布上的像素数据,将每个像素的RGB值转换为亮度值,然后更新像素数据中的RGB值为亮度值,最后将更新后的像素数据放回画布中。最终,通过调用toDataURL方法将画布转换为图片的base64编码,并将其绑定到灰度图片的src属性上。

在上述代码中,我们使用了Vue的scoped样式,以确保样式规则只适用于当前组件。

黑白处理

黑白处理是将彩色图片转换为只有黑白两种颜色的图片。下面是在Vue中实现黑白处理的代码示例:

<template>
  <div class="container">
    <img  :src="originalImage" class="original" @load="convertToBlackAndWhite" alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" >
    <img  :src="blackAndWhiteImage" class="black-and-white" v-show="blackAndWhite" alt="Wie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?" >
  </div>
</template>

<script>
export default {
  data() {
    return {
      originalImage: 'path/to/original/image.jpg',
      blackAndWhiteImage: '',
      blackAndWhite: false
    };
  },
  methods: {
    convertToBlackAndWhite() {
      let canvas = document.createElement('canvas');
      let ctx = canvas.getContext('2d');
      let img = document.querySelector('.original');
      canvas.width = img.width;
      canvas.height = img.height;
      ctx.drawImage(img, 0, 0);
      let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
      let data = imageData.data;
      for (let i = 0; i < data.length; i += 4) {
        let brightness = (data[i] + data[i + 1] + data[i + 2]) / 3;
        if (brightness > 128) {
          data[i] = 255;
          data[i + 1] = 255;
          data[i + 2] = 255;
        } else {
          data[i] = 0;
          data[i + 1] = 0;
          data[i + 2] = 0;
        }
      }
      ctx.putImageData(imageData, 0, 0);
      this.blackAndWhiteImage = canvas.toDataURL();
      this.blackAndWhite = true;
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.original, .black-and-white {
  max-width: 300px;
}

.black-and-white {
  display: none;
}
</style>
Nach dem Login kopieren

在上述代码中,与灰度处理相似,我们同样创建一个canvas元素,并绘制原始彩色图片到画布中。接着,我们获取画布上的像素数据,并将每个像素的RGB值转换为亮度值。不同的是,我们通过比较亮度值与阈值128的大小,将亮度大于128的像素设为白色,亮度小于128的像素设为黑色。最后,我们将像素数据放回画布中,并通过调用toDataURL

Im obigen Code verwenden wir den scoped-Stil von Vue, um sicherzustellen, dass die Stilregeln nur für die aktuelle Komponente gelten.

Schwarz-Weiß-Verarbeitung🎜🎜Bei der Schwarz-Weiß-Verarbeitung werden Farbbilder in Bilder umgewandelt, die nur Schwarzweiß enthalten. Das Folgende ist ein Codebeispiel zur Implementierung der Schwarzweißverarbeitung in Vue: 🎜rrreee🎜 Im obigen Code erstellen wir, ähnlich wie bei der Graustufenverarbeitung, auch ein canvas-Element und zeichnen das ursprüngliche Farbbild in die Leinwand . Als nächstes rufen wir die Pixeldaten auf der Leinwand ab und wandeln den RGB-Wert jedes Pixels in einen Helligkeitswert um. Der Unterschied besteht darin, dass wir durch den Vergleich des Helligkeitswerts mit dem Schwellenwert 128 die Pixel mit einer Helligkeit über 128 als weiß und die Pixel mit einer Helligkeit unter 128 als schwarz festlegen. Schließlich fügen wir die Pixeldaten wieder in die Leinwand ein und konvertieren die Leinwand in die Base64-Kodierung des Bildes, indem wir die Methode toDataURL aufrufen. Abschließend zeigen wir das Schwarzweißbild über die Datenbindung von Vue erneut auf der Seite an. 🎜🎜Das Obige ist die Methode und der Beispielcode zum Implementieren der Graustufenverarbeitung von Bildern und der Schwarzweißverarbeitung in Vue. Diese Techniken können uns dabei helfen, verschiedene Bildspezialeffekte in der Front-End-Entwicklung zu erzielen. Ich hoffe, dieser Artikel ist hilfreich für Sie! 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man die Graustufen- und Schwarzweißverarbeitung von Bildern in Vue?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!